@sendly/cli 3.24.0 → 3.27.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/dist/commands/campaigns/schedule.js +20 -10
- package/dist/commands/conversations/context.d.ts +15 -0
- package/dist/commands/conversations/context.js +55 -0
- package/dist/commands/conversations/suggest-replies.d.ts +13 -0
- package/dist/commands/conversations/suggest-replies.js +50 -0
- package/dist/commands/conversations/update.d.ts +15 -0
- package/dist/commands/conversations/update.js +56 -0
- package/dist/commands/doctor.d.ts +1 -0
- package/dist/commands/doctor.js +45 -1
- package/dist/commands/drafts/list.js +2 -2
- package/dist/commands/enterprise/generate-business-page.d.ts +16 -0
- package/dist/commands/enterprise/generate-business-page.js +62 -0
- package/dist/commands/enterprise/upload-verification-document.d.ts +13 -0
- package/dist/commands/enterprise/upload-verification-document.js +109 -0
- package/dist/commands/events/listen.d.ts +11 -0
- package/dist/commands/events/listen.js +82 -0
- package/dist/commands/labels/add.d.ts +14 -0
- package/dist/commands/labels/add.js +46 -0
- package/dist/commands/labels/remove.d.ts +14 -0
- package/dist/commands/labels/remove.js +46 -0
- package/dist/commands/rules/create.d.ts +16 -0
- package/dist/commands/rules/create.js +70 -0
- package/dist/commands/rules/delete.d.ts +13 -0
- package/dist/commands/rules/delete.js +29 -0
- package/dist/commands/rules/index.d.ts +10 -0
- package/dist/commands/rules/index.js +56 -0
- package/dist/commands/sms/batch.js +1 -1
- package/dist/commands/sms/schedule.d.ts +3 -3
- package/dist/commands/sms/schedule.js +117 -27
- package/dist/commands/sms/search.d.ts +16 -0
- package/dist/commands/sms/search.js +105 -0
- package/dist/commands/sms/send.d.ts +1 -1
- package/dist/commands/sms/send.js +55 -10
- package/dist/commands/templates/update.d.ts +15 -0
- package/dist/commands/templates/update.js +70 -0
- package/dist/commands/webhooks/listen.js +5 -1
- package/dist/lib/base-command.js +2 -2
- package/oclif.manifest.json +1388 -644
- package/package.json +17 -2
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { Flags } from "@oclif/core";
|
|
2
|
+
import { AuthenticatedCommand } from "../../lib/base-command.js";
|
|
3
|
+
import { apiClient } from "../../lib/api-client.js";
|
|
4
|
+
import { success, json, colors, isJsonMode, spinner, } from "../../lib/output.js";
|
|
5
|
+
export default class EnterpriseGenerateBusinessPage extends AuthenticatedCommand {
|
|
6
|
+
static description = "Generate a hosted business page for verification";
|
|
7
|
+
static examples = [
|
|
8
|
+
'<%= config.bin %> enterprise generate-business-page --name "Acme Services" --use-case "Appointment Reminders"',
|
|
9
|
+
'<%= config.bin %> enterprise generate-business-page --name "Acme Services" --email hello@acme.com --phone +15551234567',
|
|
10
|
+
];
|
|
11
|
+
static flags = {
|
|
12
|
+
...AuthenticatedCommand.baseFlags,
|
|
13
|
+
name: Flags.string({
|
|
14
|
+
char: "n",
|
|
15
|
+
description: "Business name (required)",
|
|
16
|
+
required: true,
|
|
17
|
+
}),
|
|
18
|
+
"use-case": Flags.string({
|
|
19
|
+
description: "Use case (e.g. Appointment Reminders)",
|
|
20
|
+
}),
|
|
21
|
+
summary: Flags.string({
|
|
22
|
+
description: "Use case summary",
|
|
23
|
+
}),
|
|
24
|
+
email: Flags.string({
|
|
25
|
+
description: "Contact email",
|
|
26
|
+
}),
|
|
27
|
+
phone: Flags.string({
|
|
28
|
+
description: "Contact phone",
|
|
29
|
+
}),
|
|
30
|
+
address: Flags.string({
|
|
31
|
+
description: "Business address",
|
|
32
|
+
}),
|
|
33
|
+
};
|
|
34
|
+
async run() {
|
|
35
|
+
const { flags } = await this.parse(EnterpriseGenerateBusinessPage);
|
|
36
|
+
const spin = spinner("Generating business page...");
|
|
37
|
+
spin.start();
|
|
38
|
+
const body = { businessName: flags.name };
|
|
39
|
+
if (flags["use-case"])
|
|
40
|
+
body.useCase = flags["use-case"];
|
|
41
|
+
if (flags.summary)
|
|
42
|
+
body.useCaseSummary = flags.summary;
|
|
43
|
+
if (flags.email)
|
|
44
|
+
body.contactEmail = flags.email;
|
|
45
|
+
if (flags.phone)
|
|
46
|
+
body.contactPhone = flags.phone;
|
|
47
|
+
if (flags.address)
|
|
48
|
+
body.businessAddress = flags.address;
|
|
49
|
+
const response = await apiClient.post("/api/v1/enterprise/business-page/generate", body);
|
|
50
|
+
spin.succeed("Business page generated");
|
|
51
|
+
if (isJsonMode()) {
|
|
52
|
+
json(response);
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
success("Business page generated", {
|
|
56
|
+
URL: colors.success(response.url),
|
|
57
|
+
Slug: response.slug,
|
|
58
|
+
"Page ID": colors.dim(response.pageId),
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJhdGUtYnVzaW5lc3MtcGFnZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21tYW5kcy9lbnRlcnByaXNlL2dlbmVyYXRlLWJ1c2luZXNzLXBhZ2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNwQyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDcEQsT0FBTyxFQUNMLE9BQU8sRUFDUCxJQUFJLEVBQ0osTUFBTSxFQUNOLFVBQVUsRUFDVixPQUFPLEdBQ1IsTUFBTSxxQkFBcUIsQ0FBQztBQVE3QixNQUFNLENBQUMsT0FBTyxPQUFPLDhCQUErQixTQUFRLG9CQUFvQjtJQUM5RSxNQUFNLENBQUMsV0FBVyxHQUFHLGtEQUFrRCxDQUFDO0lBRXhFLE1BQU0sQ0FBQyxRQUFRLEdBQUc7UUFDaEIsK0dBQStHO1FBQy9HLHdIQUF3SDtLQUN6SCxDQUFDO0lBRUYsTUFBTSxDQUFDLEtBQUssR0FBRztRQUNiLEdBQUcsb0JBQW9CLENBQUMsU0FBUztRQUNqQyxJQUFJLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQztZQUNqQixJQUFJLEVBQUUsR0FBRztZQUNULFdBQVcsRUFBRSwwQkFBMEI7WUFDdkMsUUFBUSxFQUFFLElBQUk7U0FDZixDQUFDO1FBQ0YsVUFBVSxFQUFFLEtBQUssQ0FBQyxNQUFNLENBQUM7WUFDdkIsV0FBVyxFQUFFLHVDQUF1QztTQUNyRCxDQUFDO1FBQ0YsT0FBTyxFQUFFLEtBQUssQ0FBQyxNQUFNLENBQUM7WUFDcEIsV0FBVyxFQUFFLGtCQUFrQjtTQUNoQyxDQUFDO1FBQ0YsS0FBSyxFQUFFLEtBQUssQ0FBQyxNQUFNLENBQUM7WUFDbEIsV0FBVyxFQUFFLGVBQWU7U0FDN0IsQ0FBQztRQUNGLEtBQUssRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDO1lBQ2xCLFdBQVcsRUFBRSxlQUFlO1NBQzdCLENBQUM7UUFDRixPQUFPLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQztZQUNwQixXQUFXLEVBQUUsa0JBQWtCO1NBQ2hDLENBQUM7S0FDSCxDQUFDO0lBRUYsS0FBSyxDQUFDLEdBQUc7UUFDUCxNQUFNLEVBQUUsS0FBSyxFQUFFLEdBQUcsTUFBTSxJQUFJLENBQUMsS0FBSyxDQUFDLDhCQUE4QixDQUFDLENBQUM7UUFFbkUsTUFBTSxJQUFJLEdBQUcsT0FBTyxDQUFDLDZCQUE2QixDQUFDLENBQUM7UUFDcEQsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBRWIsTUFBTSxJQUFJLEdBQTRCLEVBQUUsWUFBWSxFQUFFLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNuRSxJQUFJLEtBQUssQ0FBQyxVQUFVLENBQUM7WUFBRSxJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUN4RCxJQUFJLEtBQUssQ0FBQyxPQUFPO1lBQUUsSUFBSSxDQUFDLGNBQWMsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDO1FBQ3ZELElBQUksS0FBSyxDQUFDLEtBQUs7WUFBRSxJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUM7UUFDakQsSUFBSSxLQUFLLENBQUMsS0FBSztZQUFFLElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQztRQUNqRCxJQUFJLEtBQUssQ0FBQyxPQUFPO1lBQUUsSUFBSSxDQUFDLGVBQWUsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDO1FBRXhELE1BQU0sUUFBUSxHQUFHLE1BQU0sU0FBUyxDQUFDLElBQUksQ0FDbkMsMkNBQTJDLEVBQzNDLElBQUksQ0FDTCxDQUFDO1FBRUYsSUFBSSxDQUFDLE9BQU8sQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO1FBRXhDLElBQUksVUFBVSxFQUFFLEVBQUUsQ0FBQztZQUNqQixJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDZixPQUFPO1FBQ1QsQ0FBQztRQUVELE9BQU8sQ0FBQyx5QkFBeUIsRUFBRTtZQUNqQyxHQUFHLEVBQUUsTUFBTSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDO1lBQ2pDLElBQUksRUFBRSxRQUFRLENBQUMsSUFBSTtZQUNuQixTQUFTLEVBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDO1NBQ3ZDLENBQUMsQ0FBQztJQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGbGFncyB9IGZyb20gXCJAb2NsaWYvY29yZVwiO1xuaW1wb3J0IHsgQXV0aGVudGljYXRlZENvbW1hbmQgfSBmcm9tIFwiLi4vLi4vbGliL2Jhc2UtY29tbWFuZC5qc1wiO1xuaW1wb3J0IHsgYXBpQ2xpZW50IH0gZnJvbSBcIi4uLy4uL2xpYi9hcGktY2xpZW50LmpzXCI7XG5pbXBvcnQge1xuICBzdWNjZXNzLFxuICBqc29uLFxuICBjb2xvcnMsXG4gIGlzSnNvbk1vZGUsXG4gIHNwaW5uZXIsXG59IGZyb20gXCIuLi8uLi9saWIvb3V0cHV0LmpzXCI7XG5cbmludGVyZmFjZSBHZW5lcmF0ZUJ1c2luZXNzUGFnZVJlc3BvbnNlIHtcbiAgc2x1Zzogc3RyaW5nO1xuICB1cmw6IHN0cmluZztcbiAgcGFnZUlkOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEVudGVycHJpc2VHZW5lcmF0ZUJ1c2luZXNzUGFnZSBleHRlbmRzIEF1dGhlbnRpY2F0ZWRDb21tYW5kIHtcbiAgc3RhdGljIGRlc2NyaXB0aW9uID0gXCJHZW5lcmF0ZSBhIGhvc3RlZCBidXNpbmVzcyBwYWdlIGZvciB2ZXJpZmljYXRpb25cIjtcblxuICBzdGF0aWMgZXhhbXBsZXMgPSBbXG4gICAgJzwlPSBjb25maWcuYmluICU+IGVudGVycHJpc2UgZ2VuZXJhdGUtYnVzaW5lc3MtcGFnZSAtLW5hbWUgXCJBY21lIFNlcnZpY2VzXCIgLS11c2UtY2FzZSBcIkFwcG9pbnRtZW50IFJlbWluZGVyc1wiJyxcbiAgICAnPCU9IGNvbmZpZy5iaW4gJT4gZW50ZXJwcmlzZSBnZW5lcmF0ZS1idXNpbmVzcy1wYWdlIC0tbmFtZSBcIkFjbWUgU2VydmljZXNcIiAtLWVtYWlsIGhlbGxvQGFjbWUuY29tIC0tcGhvbmUgKzE1NTUxMjM0NTY3JyxcbiAgXTtcblxuICBzdGF0aWMgZmxhZ3MgPSB7XG4gICAgLi4uQXV0aGVudGljYXRlZENvbW1hbmQuYmFzZUZsYWdzLFxuICAgIG5hbWU6IEZsYWdzLnN0cmluZyh7XG4gICAgICBjaGFyOiBcIm5cIixcbiAgICAgIGRlc2NyaXB0aW9uOiBcIkJ1c2luZXNzIG5hbWUgKHJlcXVpcmVkKVwiLFxuICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgfSksXG4gICAgXCJ1c2UtY2FzZVwiOiBGbGFncy5zdHJpbmcoe1xuICAgICAgZGVzY3JpcHRpb246IFwiVXNlIGNhc2UgKGUuZy4gQXBwb2ludG1lbnQgUmVtaW5kZXJzKVwiLFxuICAgIH0pLFxuICAgIHN1bW1hcnk6IEZsYWdzLnN0cmluZyh7XG4gICAgICBkZXNjcmlwdGlvbjogXCJVc2UgY2FzZSBzdW1tYXJ5XCIsXG4gICAgfSksXG4gICAgZW1haWw6IEZsYWdzLnN0cmluZyh7XG4gICAgICBkZXNjcmlwdGlvbjogXCJDb250YWN0IGVtYWlsXCIsXG4gICAgfSksXG4gICAgcGhvbmU6IEZsYWdzLnN0cmluZyh7XG4gICAgICBkZXNjcmlwdGlvbjogXCJDb250YWN0IHBob25lXCIsXG4gICAgfSksXG4gICAgYWRkcmVzczogRmxhZ3Muc3RyaW5nKHtcbiAgICAgIGRlc2NyaXB0aW9uOiBcIkJ1c2luZXNzIGFkZHJlc3NcIixcbiAgICB9KSxcbiAgfTtcblxuICBhc3luYyBydW4oKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgeyBmbGFncyB9ID0gYXdhaXQgdGhpcy5wYXJzZShFbnRlcnByaXNlR2VuZXJhdGVCdXNpbmVzc1BhZ2UpO1xuXG4gICAgY29uc3Qgc3BpbiA9IHNwaW5uZXIoXCJHZW5lcmF0aW5nIGJ1c2luZXNzIHBhZ2UuLi5cIik7XG4gICAgc3Bpbi5zdGFydCgpO1xuXG4gICAgY29uc3QgYm9keTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7IGJ1c2luZXNzTmFtZTogZmxhZ3MubmFtZSB9O1xuICAgIGlmIChmbGFnc1tcInVzZS1jYXNlXCJdKSBib2R5LnVzZUNhc2UgPSBmbGFnc1tcInVzZS1jYXNlXCJdO1xuICAgIGlmIChmbGFncy5zdW1tYXJ5KSBib2R5LnVzZUNhc2VTdW1tYXJ5ID0gZmxhZ3Muc3VtbWFyeTtcbiAgICBpZiAoZmxhZ3MuZW1haWwpIGJvZHkuY29udGFjdEVtYWlsID0gZmxhZ3MuZW1haWw7XG4gICAgaWYgKGZsYWdzLnBob25lKSBib2R5LmNvbnRhY3RQaG9uZSA9IGZsYWdzLnBob25lO1xuICAgIGlmIChmbGFncy5hZGRyZXNzKSBib2R5LmJ1c2luZXNzQWRkcmVzcyA9IGZsYWdzLmFkZHJlc3M7XG5cbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGFwaUNsaWVudC5wb3N0PEdlbmVyYXRlQnVzaW5lc3NQYWdlUmVzcG9uc2U+KFxuICAgICAgXCIvYXBpL3YxL2VudGVycHJpc2UvYnVzaW5lc3MtcGFnZS9nZW5lcmF0ZVwiLFxuICAgICAgYm9keSxcbiAgICApO1xuXG4gICAgc3Bpbi5zdWNjZWVkKFwiQnVzaW5lc3MgcGFnZSBnZW5lcmF0ZWRcIik7XG5cbiAgICBpZiAoaXNKc29uTW9kZSgpKSB7XG4gICAgICBqc29uKHJlc3BvbnNlKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBzdWNjZXNzKFwiQnVzaW5lc3MgcGFnZSBnZW5lcmF0ZWRcIiwge1xuICAgICAgVVJMOiBjb2xvcnMuc3VjY2VzcyhyZXNwb25zZS51cmwpLFxuICAgICAgU2x1ZzogcmVzcG9uc2Uuc2x1ZyxcbiAgICAgIFwiUGFnZSBJRFwiOiBjb2xvcnMuZGltKHJlc3BvbnNlLnBhZ2VJZCksXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { AuthenticatedCommand } from "../../lib/base-command.js";
|
|
2
|
+
export default class EnterpriseUploadVerificationDocument extends AuthenticatedCommand {
|
|
3
|
+
static description: string;
|
|
4
|
+
static examples: string[];
|
|
5
|
+
static flags: {
|
|
6
|
+
file: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
|
|
7
|
+
"workspace-id": import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
|
|
8
|
+
"verification-id": import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
|
|
9
|
+
json: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
|
|
10
|
+
quiet: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
|
|
11
|
+
};
|
|
12
|
+
run(): Promise<void>;
|
|
13
|
+
}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
import { Flags } from "@oclif/core";
|
|
2
|
+
import { AuthenticatedCommand } from "../../lib/base-command.js";
|
|
3
|
+
import { success, json, isJsonMode, spinner } from "../../lib/output.js";
|
|
4
|
+
import { getAuthToken, getConfigValue, getEffectiveValue, } from "../../lib/config.js";
|
|
5
|
+
import { ApiError, AuthenticationError, } from "../../lib/api-client.js";
|
|
6
|
+
import * as fs from "node:fs";
|
|
7
|
+
import * as path from "node:path";
|
|
8
|
+
export default class EnterpriseUploadVerificationDocument extends AuthenticatedCommand {
|
|
9
|
+
static description = "Upload a verification document (image or PDF)";
|
|
10
|
+
static examples = [
|
|
11
|
+
'<%= config.bin %> enterprise upload-verification-document --file ./ein-letter.png',
|
|
12
|
+
'<%= config.bin %> enterprise upload-verification-document --file ./doc.pdf --workspace-id ws_123',
|
|
13
|
+
];
|
|
14
|
+
static flags = {
|
|
15
|
+
...AuthenticatedCommand.baseFlags,
|
|
16
|
+
file: Flags.string({
|
|
17
|
+
char: "f",
|
|
18
|
+
description: "Path to the file to upload (image or PDF)",
|
|
19
|
+
required: true,
|
|
20
|
+
}),
|
|
21
|
+
"workspace-id": Flags.string({
|
|
22
|
+
description: "Workspace ID to associate the document with",
|
|
23
|
+
}),
|
|
24
|
+
"verification-id": Flags.string({
|
|
25
|
+
description: "Verification ID to associate the document with",
|
|
26
|
+
}),
|
|
27
|
+
};
|
|
28
|
+
async run() {
|
|
29
|
+
const { flags } = await this.parse(EnterpriseUploadVerificationDocument);
|
|
30
|
+
const filePath = flags.file;
|
|
31
|
+
if (!fs.existsSync(filePath)) {
|
|
32
|
+
this.error(`File not found: ${filePath}`);
|
|
33
|
+
}
|
|
34
|
+
const filename = path.basename(filePath);
|
|
35
|
+
const ext = path.extname(filePath).toLowerCase();
|
|
36
|
+
let mimetype = "application/octet-stream";
|
|
37
|
+
if (ext === ".jpg" || ext === ".jpeg")
|
|
38
|
+
mimetype = "image/jpeg";
|
|
39
|
+
else if (ext === ".png")
|
|
40
|
+
mimetype = "image/png";
|
|
41
|
+
else if (ext === ".gif")
|
|
42
|
+
mimetype = "image/gif";
|
|
43
|
+
else if (ext === ".pdf")
|
|
44
|
+
mimetype = "application/pdf";
|
|
45
|
+
else if (ext === ".webp")
|
|
46
|
+
mimetype = "image/webp";
|
|
47
|
+
const fileBuffer = fs.readFileSync(filePath);
|
|
48
|
+
const boundary = `----FormBoundary${Date.now()}${Math.random().toString(36).substring(2)}`;
|
|
49
|
+
const parts = [];
|
|
50
|
+
parts.push(Buffer.from(`--${boundary}\r\n` +
|
|
51
|
+
`Content-Disposition: form-data; name="file"; filename="${filename}"\r\n` +
|
|
52
|
+
`Content-Type: ${mimetype}\r\n\r\n`));
|
|
53
|
+
parts.push(fileBuffer);
|
|
54
|
+
if (flags["workspace-id"]) {
|
|
55
|
+
parts.push(Buffer.from(`\r\n--${boundary}\r\n` +
|
|
56
|
+
`Content-Disposition: form-data; name="workspaceId"\r\n\r\n` +
|
|
57
|
+
flags["workspace-id"]));
|
|
58
|
+
}
|
|
59
|
+
if (flags["verification-id"]) {
|
|
60
|
+
parts.push(Buffer.from(`\r\n--${boundary}\r\n` +
|
|
61
|
+
`Content-Disposition: form-data; name="verificationId"\r\n\r\n` +
|
|
62
|
+
flags["verification-id"]));
|
|
63
|
+
}
|
|
64
|
+
parts.push(Buffer.from(`\r\n--${boundary}--\r\n`));
|
|
65
|
+
const body = Buffer.concat(parts);
|
|
66
|
+
const token = getAuthToken();
|
|
67
|
+
if (!token) {
|
|
68
|
+
throw new AuthenticationError();
|
|
69
|
+
}
|
|
70
|
+
const baseUrl = getConfigValue("baseUrl") || "https://sendly.live";
|
|
71
|
+
const timeout = getEffectiveValue("timeout");
|
|
72
|
+
const url = `${baseUrl}/api/v1/enterprise/verification-document/upload`;
|
|
73
|
+
const headers = {
|
|
74
|
+
"Content-Type": `multipart/form-data; boundary=${boundary}`,
|
|
75
|
+
Accept: "application/json",
|
|
76
|
+
Authorization: `Bearer ${token}`,
|
|
77
|
+
};
|
|
78
|
+
const orgId = getEffectiveValue("currentOrgId");
|
|
79
|
+
if (orgId) {
|
|
80
|
+
headers["X-Organization-Id"] = orgId;
|
|
81
|
+
}
|
|
82
|
+
const spin = spinner("Uploading verification document...");
|
|
83
|
+
spin.start();
|
|
84
|
+
const controller = new AbortController();
|
|
85
|
+
const timeoutId = setTimeout(() => controller.abort(), timeout);
|
|
86
|
+
const resp = await fetch(url, {
|
|
87
|
+
method: "POST",
|
|
88
|
+
headers,
|
|
89
|
+
body,
|
|
90
|
+
signal: controller.signal,
|
|
91
|
+
});
|
|
92
|
+
clearTimeout(timeoutId);
|
|
93
|
+
const data = (await resp.json().catch(() => ({})));
|
|
94
|
+
if (!resp.ok) {
|
|
95
|
+
spin.fail("Upload failed");
|
|
96
|
+
throw new ApiError(data.error || "upload_error", data.message || `HTTP ${resp.status}`, resp.status);
|
|
97
|
+
}
|
|
98
|
+
spin.succeed("Document uploaded");
|
|
99
|
+
if (isJsonMode()) {
|
|
100
|
+
json(data);
|
|
101
|
+
return;
|
|
102
|
+
}
|
|
103
|
+
success("Verification document uploaded", {
|
|
104
|
+
ID: data.id,
|
|
105
|
+
URL: data.url,
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBsb2FkLXZlcmlmaWNhdGlvbi1kb2N1bWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21tYW5kcy9lbnRlcnByaXNlL3VwbG9hZC12ZXJpZmljYXRpb24tZG9jdW1lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNwQyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDekUsT0FBTyxFQUNMLFlBQVksRUFDWixjQUFjLEVBQ2QsaUJBQWlCLEdBQ2xCLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUNMLFFBQVEsRUFDUixtQkFBbUIsR0FDcEIsTUFBTSx5QkFBeUIsQ0FBQztBQUNqQyxPQUFPLEtBQUssRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUM5QixPQUFPLEtBQUssSUFBSSxNQUFNLFdBQVcsQ0FBQztBQU9sQyxNQUFNLENBQUMsT0FBTyxPQUFPLG9DQUFxQyxTQUFRLG9CQUFvQjtJQUNwRixNQUFNLENBQUMsV0FBVyxHQUFHLCtDQUErQyxDQUFDO0lBRXJFLE1BQU0sQ0FBQyxRQUFRLEdBQUc7UUFDaEIsbUZBQW1GO1FBQ25GLGtHQUFrRztLQUNuRyxDQUFDO0lBRUYsTUFBTSxDQUFDLEtBQUssR0FBRztRQUNiLEdBQUcsb0JBQW9CLENBQUMsU0FBUztRQUNqQyxJQUFJLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQztZQUNqQixJQUFJLEVBQUUsR0FBRztZQUNULFdBQVcsRUFBRSwyQ0FBMkM7WUFDeEQsUUFBUSxFQUFFLElBQUk7U0FDZixDQUFDO1FBQ0YsY0FBYyxFQUFFLEtBQUssQ0FBQyxNQUFNLENBQUM7WUFDM0IsV0FBVyxFQUFFLDZDQUE2QztTQUMzRCxDQUFD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QU0sSUFBSSxRQUFRLENBQ2hCLElBQUksQ0FBQyxLQUFLLElBQUksY0FBYyxFQUM1QixJQUFJLENBQUMsT0FBTyxJQUFJLFFBQVEsSUFBSSxDQUFDLE1BQU0sRUFBRSxFQUNyQyxJQUFJLENBQUMsTUFBTSxDQUNaLENBQUM7UUFDSixDQUFDO1FBRUQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBRWxDLElBQUksVUFBVSxFQUFFLEVBQUUsQ0FBQztZQUNqQixJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDWCxPQUFPO1FBQ1QsQ0FBQztRQUVELE9BQU8sQ0FBQyxnQ0FBZ0MsRUFBRTtZQUN4QyxFQUFFLEVBQUUsSUFBSSxDQUFDLEVBQUU7WUFDWCxHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUc7U0FDZCxDQUFDLENBQUM7SUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRmxhZ3MgfSBmcm9tIFwiQG9jbGlmL2NvcmVcIjtcbmltcG9ydCB7IEF1dGhlbnRpY2F0ZWRDb21tYW5kIH0gZnJvbSBcIi4uLy4uL2xpYi9iYXNlLWNvbW1hbmQuanNcIjtcbmltcG9ydCB7IHN1Y2Nlc3MsIGpzb24sIGlzSnNvbk1vZGUsIHNwaW5uZXIgfSBmcm9tIFwiLi4vLi4vbGliL291dHB1dC5qc1wiO1xuaW1wb3J0IHtcbiAgZ2V0QXV0aFRva2VuLFxuICBnZXRDb25maWdWYWx1ZSxcbiAgZ2V0RWZmZWN0aXZlVmFsdWUsXG59IGZyb20gXCIuLi8uLi9saWIvY29uZmlnLmpzXCI7XG5pbXBvcnQge1xuICBBcGlFcnJvcixcbiAgQXV0aGVudGljYXRpb25FcnJvcixcbn0gZnJvbSBcIi4uLy4uL2xpYi9hcGktY2xpZW50LmpzXCI7XG5pbXBvcnQgKiBhcyBmcyBmcm9tIFwibm9kZTpmc1wiO1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tIFwibm9kZTpwYXRoXCI7XG5cbmludGVyZmFjZSBVcGxvYWRSZXNwb25zZSB7XG4gIHVybDogc3RyaW5nO1xuICBpZDogc3RyaW5nO1xufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBFbnRlcnByaXNlVXBsb2FkVmVyaWZpY2F0aW9uRG9jdW1lbnQgZXh0ZW5kcyBBdXRoZW50aWNhdGVkQ29tbWFuZCB7XG4gIHN0YXRpYyBkZXNjcmlwdGlvbiA9IFwiVXBsb2FkIGEgdmVyaWZpY2F0aW9uIGRvY3VtZW50IChpbWFnZSBvciBQREYpXCI7XG5cbiAgc3RhdGljIGV4YW1wbGVzID0gW1xuICAgICc8JT0gY29uZmlnLmJpbiAlPiBlbnRlcnByaXNlIHVwbG9hZC12ZXJpZmljYXRpb24tZG9jdW1lbnQgLS1maWxlIC4vZWluLWxldHRlci5wbmcnLFxuICAgICc8JT0gY29uZmlnLmJpbiAlPiBlbnRlcnByaXNlIHVwbG9hZC12ZXJpZmljYXRpb24tZG9jdW1lbnQgLS1maWxlIC4vZG9jLnBkZiAtLXdvcmtzcGFjZS1pZCB3c18xMjMnLFxuICBdO1xuXG4gIHN0YXRpYyBmbGFncyA9IHtcbiAgICAuLi5BdXRoZW50aWNhdGVkQ29tbWFuZC5iYXNlRmxhZ3MsXG4gICAgZmlsZTogRmxhZ3Muc3RyaW5nKHtcbiAgICAgIGNoYXI6IFwiZlwiLFxuICAgICAgZGVzY3JpcHRpb246IFwiUGF0aCB0byB0aGUgZmlsZSB0byB1cGxvYWQgKGltYWdlIG9yIFBERilcIixcbiAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgIH0pLFxuICAgIFwid29ya3NwYWNlLWlkXCI6IEZsYWdzLnN0cmluZyh7XG4gICAgICBkZXNjcmlwdGlvbjogXCJXb3Jrc3BhY2UgSUQgdG8gYXNzb2NpYXRlIHRoZSBkb2N1bWVudCB3aXRoXCIsXG4gICAgfSksXG4gICAgXCJ2ZXJpZmljYXRpb24taWRcIjogRmxhZ3Muc3RyaW5nKHtcbiAgICAgIGRlc2NyaXB0aW9uOiBcIlZlcmlmaWNhdGlvbiBJRCB0byBhc3NvY2lhdGUgdGhlIGRvY3VtZW50IHdpdGhcIixcbiAgICB9KSxcbiAgfTtcblxuICBhc3luYyBydW4oKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgeyBmbGFncyB9ID0gYXdhaXQgdGhpcy5wYXJzZShFbnRlcnByaXNlVXBsb2FkVmVyaWZpY2F0aW9uRG9jdW1lbnQpO1xuXG4gICAgY29uc3QgZmlsZVBhdGggPSBmbGFncy5maWxlO1xuICAgIGlmICghZnMuZXhpc3RzU3luYyhmaWxlUGF0aCkpIHtcbiAgICAgIHRoaXMuZXJyb3IoYEZpbGUgbm90IGZvdW5kOiAke2ZpbGVQYXRofWApO1xuICAgIH1cblxuICAgIGNvbnN0IGZpbGVuYW1lID0gcGF0aC5iYXNlbmFtZShmaWxlUGF0aCk7XG4gICAgY29uc3QgZXh0ID0gcGF0aC5leHRuYW1lKGZpbGVQYXRoKS50b0xvd2VyQ2FzZSgpO1xuXG4gICAgbGV0IG1pbWV0eXBlID0gXCJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW1cIjtcbiAgICBpZiAoZXh0ID09PSBcIi5qcGdcIiB8fCBleHQgPT09IFwiLmpwZWdcIikgbWltZXR5cGUgPSBcImltYWdlL2pwZWdcIjtcbiAgICBlbHNlIGlmIChleHQgPT09IFwiLnBuZ1wiKSBtaW1ldHlwZSA9IFwiaW1hZ2UvcG5nXCI7XG4gICAgZWxzZSBpZiAoZXh0ID09PSBcIi5naWZcIikgbWltZXR5cGUgPSBcImltYWdlL2dpZlwiO1xuICAgIGVsc2UgaWYgKGV4dCA9PT0gXCIucGRmXCIpIG1pbWV0eXBlID0gXCJhcHBsaWNhdGlvbi9wZGZcIjtcbiAgICBlbHNlIGlmIChleHQgPT09IFwiLndlYnBcIikgbWltZXR5cGUgPSBcImltYWdlL3dlYnBcIjtcblxuICAgIGNvbnN0IGZpbGVCdWZmZXIgPSBmcy5yZWFkRmlsZVN5bmMoZmlsZVBhdGgpO1xuXG4gICAgY29uc3QgYm91bmRhcnkgPSBgLS0tLUZvcm1Cb3VuZGFyeSR7RGF0ZS5ub3coKX0ke01hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnN1YnN0cmluZygyKX1gO1xuICAgIGNvbnN0IHBhcnRzOiBCdWZmZXJbXSA9IFtdO1xuXG4gICAgcGFydHMucHVzaChCdWZmZXIuZnJvbShcbiAgICAgIGAtLSR7Ym91bmRhcnl9XFxyXFxuYCArXG4gICAgICBgQ29udGVudC1EaXNwb3NpdGlvbjogZm9ybS1kYXRhOyBuYW1lPVwiZmlsZVwiOyBmaWxlbmFtZT1cIiR7ZmlsZW5hbWV9XCJcXHJcXG5gICtcbiAgICAgIGBDb250ZW50LVR5cGU6ICR7bWltZXR5cGV9XFxyXFxuXFxyXFxuYCxcbiAgICApKTtcbiAgICBwYXJ0cy5wdXNoKGZpbGVCdWZmZXIpO1xuXG4gICAgaWYgKGZsYWdzW1wid29ya3NwYWNlLWlkXCJdKSB7XG4gICAgICBwYXJ0cy5wdXNoKEJ1ZmZlci5mcm9tKFxuICAgICAgICBgXFxyXFxuLS0ke2JvdW5kYXJ5fVxcclxcbmAgK1xuICAgICAgICBgQ29udGVudC1EaXNwb3NpdGlvbjogZm9ybS1kYXRhOyBuYW1lPVwid29ya3NwYWNlSWRcIlxcclxcblxcclxcbmAgK1xuICAgICAgICBmbGFnc1tcIndvcmtzcGFjZS1pZFwiXSxcbiAgICAgICkpO1xuICAgIH1cblxuICAgIGlmIChmbGFnc1tcInZlcmlmaWNhdGlvbi1pZFwiXSkge1xuICAgICAgcGFydHMucHVzaChCdWZmZXIuZnJvbShcbiAgICAgICAgYFxcclxcbi0tJHtib3VuZGFyeX1cXHJcXG5gICtcbiAgICAgICAgYENvbnRlbnQtRGlzcG9zaXRpb246IGZvcm0tZGF0YTsgbmFtZT1cInZlcmlmaWNhdGlvbklkXCJcXHJcXG5cXHJcXG5gICtcbiAgICAgICAgZmxhZ3NbXCJ2ZXJpZmljYXRpb24taWRcIl0sXG4gICAgICApKTtcbiAgICB9XG5cbiAgICBwYXJ0cy5wdXNoKEJ1ZmZlci5mcm9tKGBcXHJcXG4tLSR7Ym91bmRhcnl9LS1cXHJcXG5gKSk7XG5cbiAgICBjb25zdCBib2R5ID0gQnVmZmVyLmNvbmNhdChwYXJ0cyk7XG5cbiAgICBjb25zdCB0b2tlbiA9IGdldEF1dGhUb2tlbigpO1xuICAgIGlmICghdG9rZW4pIHtcbiAgICAgIHRocm93IG5ldyBBdXRoZW50aWNhdGlvbkVycm9yKCk7XG4gICAgfVxuXG4gICAgY29uc3QgYmFzZVVybCA9IGdldENvbmZpZ1ZhbHVlKFwiYmFzZVVybFwiKSB8fCBcImh0dHBzOi8vc2VuZGx5LmxpdmVcIjtcbiAgICBjb25zdCB0aW1lb3V0ID0gZ2V0RWZmZWN0aXZlVmFsdWUoXCJ0aW1lb3V0XCIpO1xuICAgIGNvbnN0IHVybCA9IGAke2Jhc2VVcmx9L2FwaS92MS9lbnRlcnByaXNlL3ZlcmlmaWNhdGlvbi1kb2N1bWVudC91cGxvYWRgO1xuXG4gICAgY29uc3QgaGVhZGVyczogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgICAgIFwiQ29udGVudC1UeXBlXCI6IGBtdWx0aXBhcnQvZm9ybS1kYXRhOyBib3VuZGFyeT0ke2JvdW5kYXJ5fWAsXG4gICAgICBBY2NlcHQ6IFwiYXBwbGljYXRpb24vanNvblwiLFxuICAgICAgQXV0aG9yaXphdGlvbjogYEJlYXJlciAke3Rva2VufWAsXG4gICAgfTtcblxuICAgIGNvbnN0IG9yZ0lkID0gZ2V0RWZmZWN0aXZlVmFsdWUoXCJjdXJyZW50T3JnSWRcIik7XG4gICAgaWYgKG9yZ0lkKSB7XG4gICAgICBoZWFkZXJzW1wiWC1Pcmdhbml6YXRpb24tSWRcIl0gPSBvcmdJZDtcbiAgICB9XG5cbiAgICBjb25zdCBzcGluID0gc3Bpbm5lcihcIlVwbG9hZGluZyB2ZXJpZmljYXRpb24gZG9jdW1lbnQuLi5cIik7XG4gICAgc3Bpbi5zdGFydCgpO1xuXG4gICAgY29uc3QgY29udHJvbGxlciA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKTtcbiAgICBjb25zdCB0aW1lb3V0SWQgPSBzZXRUaW1lb3V0KCgpID0+IGNvbnRyb2xsZXIuYWJvcnQoKSwgdGltZW91dCk7XG5cbiAgICBjb25zdCByZXNwID0gYXdhaXQgZmV0Y2godXJsLCB7XG4gICAgICBtZXRob2Q6IFwiUE9TVFwiLFxuICAgICAgaGVhZGVycyxcbiAgICAgIGJvZHksXG4gICAgICBzaWduYWw6IGNvbnRyb2xsZXIuc2lnbmFsLFxuICAgIH0pO1xuXG4gICAgY2xlYXJUaW1lb3V0KHRpbWVvdXRJZCk7XG5cbiAgICBjb25zdCBkYXRhID0gKGF3YWl0IHJlc3AuanNvbigpLmNhdGNoKCgpID0+ICh7fSkpKSBhcyBVcGxvYWRSZXNwb25zZSAmIHtcbiAgICAgIGVycm9yPzogc3RyaW5nO1xuICAgICAgbWVzc2FnZT86IHN0cmluZztcbiAgICB9O1xuXG4gICAgaWYgKCFyZXNwLm9rKSB7XG4gICAgICBzcGluLmZhaWwoXCJVcGxvYWQgZmFpbGVkXCIpO1xuICAgICAgdGhyb3cgbmV3IEFwaUVycm9yKFxuICAgICAgICBkYXRhLmVycm9yIHx8IFwidXBsb2FkX2Vycm9yXCIsXG4gICAgICAgIGRhdGEubWVzc2FnZSB8fCBgSFRUUCAke3Jlc3Auc3RhdHVzfWAsXG4gICAgICAgIHJlc3Auc3RhdHVzLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBzcGluLnN1Y2NlZWQoXCJEb2N1bWVudCB1cGxvYWRlZFwiKTtcblxuICAgIGlmIChpc0pzb25Nb2RlKCkpIHtcbiAgICAgIGpzb24oZGF0YSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgc3VjY2VzcyhcIlZlcmlmaWNhdGlvbiBkb2N1bWVudCB1cGxvYWRlZFwiLCB7XG4gICAgICBJRDogZGF0YS5pZCxcbiAgICAgIFVSTDogZGF0YS51cmwsXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { AuthenticatedCommand } from "../../lib/base-command.js";
|
|
2
|
+
export default class EventsListen extends AuthenticatedCommand {
|
|
3
|
+
static description: string;
|
|
4
|
+
static examples: string[];
|
|
5
|
+
static flags: {
|
|
6
|
+
types: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
|
|
7
|
+
json: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
|
|
8
|
+
quiet: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
|
|
9
|
+
};
|
|
10
|
+
run(): Promise<void>;
|
|
11
|
+
}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { Flags } from "@oclif/core";
|
|
2
|
+
import { AuthenticatedCommand } from "../../lib/base-command.js";
|
|
3
|
+
import { getAuthToken, getEffectiveValue } from "../../lib/config.js";
|
|
4
|
+
import { colors, json, isJsonMode } from "../../lib/output.js";
|
|
5
|
+
export default class EventsListen extends AuthenticatedCommand {
|
|
6
|
+
static description = "Listen to real-time events via Server-Sent Events. Streams message deliveries, conversation updates, and more.";
|
|
7
|
+
static examples = [
|
|
8
|
+
"<%= config.bin %> events listen",
|
|
9
|
+
"<%= config.bin %> events listen --types new_message,conversation_update",
|
|
10
|
+
"<%= config.bin %> events listen --json",
|
|
11
|
+
];
|
|
12
|
+
static flags = {
|
|
13
|
+
...AuthenticatedCommand.baseFlags,
|
|
14
|
+
types: Flags.string({
|
|
15
|
+
description: "Comma-separated event types to filter (default: all)",
|
|
16
|
+
}),
|
|
17
|
+
};
|
|
18
|
+
async run() {
|
|
19
|
+
const { flags } = await this.parse(EventsListen);
|
|
20
|
+
const apiKey = getAuthToken();
|
|
21
|
+
const baseUrl = getEffectiveValue("baseUrl");
|
|
22
|
+
const url = new URL("/api/v1/events", baseUrl);
|
|
23
|
+
if (flags.types)
|
|
24
|
+
url.searchParams.set("types", flags.types);
|
|
25
|
+
if (!isJsonMode()) {
|
|
26
|
+
console.log(colors.bold("Listening for events..."));
|
|
27
|
+
console.log(colors.dim(`Endpoint: ${url.toString()}`));
|
|
28
|
+
if (flags.types)
|
|
29
|
+
console.log(colors.dim(`Filtering: ${flags.types}`));
|
|
30
|
+
console.log(colors.dim("Press Ctrl+C to stop\n"));
|
|
31
|
+
}
|
|
32
|
+
const response = await fetch(url.toString(), {
|
|
33
|
+
headers: { Authorization: `Bearer ${apiKey}` },
|
|
34
|
+
});
|
|
35
|
+
if (!response.ok) {
|
|
36
|
+
throw new Error(`Connection failed: ${response.status} ${response.statusText}`);
|
|
37
|
+
}
|
|
38
|
+
const reader = response.body?.getReader();
|
|
39
|
+
if (!reader)
|
|
40
|
+
throw new Error("No response stream");
|
|
41
|
+
const decoder = new TextDecoder();
|
|
42
|
+
let buffer = "";
|
|
43
|
+
process.on("SIGINT", () => {
|
|
44
|
+
reader.cancel();
|
|
45
|
+
if (!isJsonMode())
|
|
46
|
+
console.log(colors.dim("\nDisconnected."));
|
|
47
|
+
process.exit(0);
|
|
48
|
+
});
|
|
49
|
+
while (true) {
|
|
50
|
+
const { done, value } = await reader.read();
|
|
51
|
+
if (done)
|
|
52
|
+
break;
|
|
53
|
+
buffer += decoder.decode(value, { stream: true });
|
|
54
|
+
const lines = buffer.split("\n");
|
|
55
|
+
buffer = lines.pop() || "";
|
|
56
|
+
for (const line of lines) {
|
|
57
|
+
if (!line.startsWith("data: "))
|
|
58
|
+
continue;
|
|
59
|
+
const raw = line.slice(6).trim();
|
|
60
|
+
if (!raw)
|
|
61
|
+
continue;
|
|
62
|
+
try {
|
|
63
|
+
const event = JSON.parse(raw);
|
|
64
|
+
if (isJsonMode()) {
|
|
65
|
+
json(event);
|
|
66
|
+
}
|
|
67
|
+
else {
|
|
68
|
+
const ts = new Date(event.timestamp || Date.now()).toLocaleTimeString();
|
|
69
|
+
const type = colors.primary(event.type || "unknown");
|
|
70
|
+
console.log(`${colors.dim(ts)} ${type}`);
|
|
71
|
+
if (event.data) {
|
|
72
|
+
const preview = JSON.stringify(event.data).slice(0, 120);
|
|
73
|
+
console.log(` ${colors.dim(preview)}${JSON.stringify(event.data).length > 120 ? "..." : ""}`);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
catch { }
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdGVuLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbW1hbmRzL2V2ZW50cy9saXN0ZW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNwQyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsWUFBWSxFQUFFLGlCQUFpQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEUsT0FBTyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFL0QsTUFBTSxDQUFDLE9BQU8sT0FBTyxZQUFhLFNBQVEsb0JBQW9CO0lBQzVELE1BQU0sQ0FBQyxXQUFXLEdBQ2hCLGdIQUFnSCxDQUFDO0lBRW5ILE1BQU0sQ0FBQyxRQUFRLEdBQUc7UUFDaEIsaUNBQWlDO1FBQ2pDLHlFQUF5RTtRQUN6RSx3Q0FBd0M7S0FDekMsQ0FBQztJQUVGLE1BQU0sQ0FBQyxLQUFLLEdBQUc7UUFDYixHQUFHLG9CQUFvQixDQUFDLFNBQVM7UUFDakMsS0FBSyxFQUFFLEtBQUssQ0FBQyxNQUFNLENBQUM7WUFDbEIsV0FBVyxFQUFFLHNEQUFzRDtTQUNwRSxDQUFDO0tBQ0gsQ0FBQztJQUVGLEtBQUssQ0FBQyxHQUFHO1FBQ1AsTUFBTSxFQUFFLEtBQUssRUFBRSxHQUFHLE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUVqRCxNQUFNLE1BQU0sR0FBRyxZQUFZLEVBQUUsQ0FBQztRQUM5QixNQUFNLE9BQU8sR0FBRyxpQkFBaUIsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUU3QyxNQUFNLEdBQUcsR0FBRyxJQUFJLEdBQUcsQ0FBQyxnQkFBZ0IsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUMvQyxJQUFJLEtBQUssQ0FBQyxLQUFLO1lBQUUsR0FBRyxDQUFDLFlBQVks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QUFNLEVBQUUsR0FBRyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLGtCQUFrQixFQUFFLENBQUM7d0JBQ3hFLE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksSUFBSSxTQUFTLENBQUMsQ0FBQzt3QkFDckQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUMsQ0FBQzt3QkFDMUMsSUFBSSxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7NEJBQ2YsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQzs0QkFDekQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLE1BQU0sQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO3dCQUNqRyxDQUFDO29CQUNILENBQUM7Z0JBQ0gsQ0FBQztnQkFBQyxNQUFNLENBQUMsQ0FBQSxDQUFDO1lBQ1osQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRmxhZ3MgfSBmcm9tIFwiQG9jbGlmL2NvcmVcIjtcbmltcG9ydCB7IEF1dGhlbnRpY2F0ZWRDb21tYW5kIH0gZnJvbSBcIi4uLy4uL2xpYi9iYXNlLWNvbW1hbmQuanNcIjtcbmltcG9ydCB7IGdldEF1dGhUb2tlbiwgZ2V0RWZmZWN0aXZlVmFsdWUgfSBmcm9tIFwiLi4vLi4vbGliL2NvbmZpZy5qc1wiO1xuaW1wb3J0IHsgY29sb3JzLCBqc29uLCBpc0pzb25Nb2RlIH0gZnJvbSBcIi4uLy4uL2xpYi9vdXRwdXQuanNcIjtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRXZlbnRzTGlzdGVuIGV4dGVuZHMgQXV0aGVudGljYXRlZENvbW1hbmQge1xuICBzdGF0aWMgZGVzY3JpcHRpb24gPVxuICAgIFwiTGlzdGVuIHRvIHJlYWwtdGltZSBldmVudHMgdmlhIFNlcnZlci1TZW50IEV2ZW50cy4gU3RyZWFtcyBtZXNzYWdlIGRlbGl2ZXJpZXMsIGNvbnZlcnNhdGlvbiB1cGRhdGVzLCBhbmQgbW9yZS5cIjtcblxuICBzdGF0aWMgZXhhbXBsZXMgPSBbXG4gICAgXCI8JT0gY29uZmlnLmJpbiAlPiBldmVudHMgbGlzdGVuXCIsXG4gICAgXCI8JT0gY29uZmlnLmJpbiAlPiBldmVudHMgbGlzdGVuIC0tdHlwZXMgbmV3X21lc3NhZ2UsY29udmVyc2F0aW9uX3VwZGF0ZVwiLFxuICAgIFwiPCU9IGNvbmZpZy5iaW4gJT4gZXZlbnRzIGxpc3RlbiAtLWpzb25cIixcbiAgXTtcblxuICBzdGF0aWMgZmxhZ3MgPSB7XG4gICAgLi4uQXV0aGVudGljYXRlZENvbW1hbmQuYmFzZUZsYWdzLFxuICAgIHR5cGVzOiBGbGFncy5zdHJpbmcoe1xuICAgICAgZGVzY3JpcHRpb246IFwiQ29tbWEtc2VwYXJhdGVkIGV2ZW50IHR5cGVzIHRvIGZpbHRlciAoZGVmYXVsdDogYWxsKVwiLFxuICAgIH0pLFxuICB9O1xuXG4gIGFzeW5jIHJ1bigpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCB7IGZsYWdzIH0gPSBhd2FpdCB0aGlzLnBhcnNlKEV2ZW50c0xpc3Rlbik7XG5cbiAgICBjb25zdCBhcGlLZXkgPSBnZXRBdXRoVG9rZW4oKTtcbiAgICBjb25zdCBiYXNlVXJsID0gZ2V0RWZmZWN0aXZlVmFsdWUoXCJiYXNlVXJsXCIpO1xuXG4gICAgY29uc3QgdXJsID0gbmV3IFVSTChcIi9hcGkvdjEvZXZlbnRzXCIsIGJhc2VVcmwpO1xuICAgIGlmIChmbGFncy50eXBlcykgdXJsLnNlYXJjaFBhcmFtcy5zZXQoXCJ0eXBlc1wiLCBmbGFncy50eXBlcyk7XG5cbiAgICBpZiAoIWlzSnNvbk1vZGUoKSkge1xuICAgICAgY29uc29sZS5sb2coY29sb3JzLmJvbGQoXCJMaXN0ZW5pbmcgZm9yIGV2ZW50cy4uLlwiKSk7XG4gICAgICBjb25zb2xlLmxvZyhjb2xvcnMuZGltKGBFbmRwb2ludDogJHt1cmwudG9TdHJpbmcoKX1gKSk7XG4gICAgICBpZiAoZmxhZ3MudHlwZXMpIGNvbnNvbGUubG9nKGNvbG9ycy5kaW0oYEZpbHRlcmluZzogJHtmbGFncy50eXBlc31gKSk7XG4gICAgICBjb25zb2xlLmxvZyhjb2xvcnMuZGltKFwiUHJlc3MgQ3RybCtDIHRvIHN0b3BcXG5cIikpO1xuICAgIH1cblxuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2godXJsLnRvU3RyaW5nKCksIHtcbiAgICAgIGhlYWRlcnM6IHsgQXV0aG9yaXphdGlvbjogYEJlYXJlciAke2FwaUtleX1gIH0sXG4gICAgfSk7XG5cbiAgICBpZiAoIXJlc3BvbnNlLm9rKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYENvbm5lY3Rpb24gZmFpbGVkOiAke3Jlc3BvbnNlLnN0YXR1c30gJHtyZXNwb25zZS5zdGF0dXNUZXh0fWApO1xuICAgIH1cblxuICAgIGNvbnN0IHJlYWRlciA9IHJlc3BvbnNlLmJvZHk/LmdldFJlYWRlcigpO1xuICAgIGlmICghcmVhZGVyKSB0aHJvdyBuZXcgRXJyb3IoXCJObyByZXNwb25zZSBzdHJlYW1cIik7XG5cbiAgICBjb25zdCBkZWNvZGVyID0gbmV3IFRleHREZWNvZGVyKCk7XG4gICAgbGV0IGJ1ZmZlciA9IFwiXCI7XG5cbiAgICBwcm9jZXNzLm9uKFwiU0lHSU5UXCIsICgpID0+IHtcbiAgICAgIHJlYWRlci5jYW5jZWwoKTtcbiAgICAgIGlmICghaXNKc29uTW9kZSgpKSBjb25zb2xlLmxvZyhjb2xvcnMuZGltKFwiXFxuRGlzY29ubmVjdGVkLlwiKSk7XG4gICAgICBwcm9jZXNzLmV4aXQoMCk7XG4gICAgfSk7XG5cbiAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgY29uc3QgeyBkb25lLCB2YWx1ZSB9ID0gYXdhaXQgcmVhZGVyLnJlYWQoKTtcbiAgICAgIGlmIChkb25lKSBicmVhaztcblxuICAgICAgYnVmZmVyICs9IGRlY29kZXIuZGVjb2RlKHZhbHVlLCB7IHN0cmVhbTogdHJ1ZSB9KTtcbiAgICAgIGNvbnN0IGxpbmVzID0gYnVmZmVyLnNwbGl0KFwiXFxuXCIpO1xuICAgICAgYnVmZmVyID0gbGluZXMucG9wKCkgfHwgXCJcIjtcblxuICAgICAgZm9yIChjb25zdCBsaW5lIG9mIGxpbmVzKSB7XG4gICAgICAgIGlmICghbGluZS5zdGFydHNXaXRoKFwiZGF0YTogXCIpKSBjb250aW51ZTtcbiAgICAgICAgY29uc3QgcmF3ID0gbGluZS5zbGljZSg2KS50cmltKCk7XG4gICAgICAgIGlmICghcmF3KSBjb250aW51ZTtcblxuICAgICAgICB0cnkge1xuICAgICAgICAgIGNvbnN0IGV2ZW50ID0gSlNPTi5wYXJzZShyYXcpO1xuXG4gICAgICAgICAgaWYgKGlzSnNvbk1vZGUoKSkge1xuICAgICAgICAgICAganNvbihldmVudCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IHRzID0gbmV3IERhdGUoZXZlbnQudGltZXN0YW1wIHx8IERhdGUubm93KCkpLnRvTG9jYWxlVGltZVN0cmluZygpO1xuICAgICAgICAgICAgY29uc3QgdHlwZSA9IGNvbG9ycy5wcmltYXJ5KGV2ZW50LnR5cGUgfHwgXCJ1bmtub3duXCIpO1xuICAgICAgICAgICAgY29uc29sZS5sb2coYCR7Y29sb3JzLmRpbSh0cyl9ICAke3R5cGV9YCk7XG4gICAgICAgICAgICBpZiAoZXZlbnQuZGF0YSkge1xuICAgICAgICAgICAgICBjb25zdCBwcmV2aWV3ID0gSlNPTi5zdHJpbmdpZnkoZXZlbnQuZGF0YSkuc2xpY2UoMCwgMTIwKTtcbiAgICAgICAgICAgICAgY29uc29sZS5sb2coYCAgJHtjb2xvcnMuZGltKHByZXZpZXcpfSR7SlNPTi5zdHJpbmdpZnkoZXZlbnQuZGF0YSkubGVuZ3RoID4gMTIwID8gXCIuLi5cIiA6IFwiXCJ9YCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9IGNhdGNoIHt9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { AuthenticatedCommand } from "../../lib/base-command.js";
|
|
2
|
+
export default class LabelsAdd extends AuthenticatedCommand {
|
|
3
|
+
static description: string;
|
|
4
|
+
static examples: string[];
|
|
5
|
+
static args: {
|
|
6
|
+
conversationId: import("@oclif/core/lib/interfaces/parser.js").Arg<string, Record<string, unknown>>;
|
|
7
|
+
labelId: import("@oclif/core/lib/interfaces/parser.js").Arg<string, Record<string, unknown>>;
|
|
8
|
+
};
|
|
9
|
+
static flags: {
|
|
10
|
+
json: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
|
|
11
|
+
quiet: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
|
|
12
|
+
};
|
|
13
|
+
run(): Promise<void>;
|
|
14
|
+
}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { Args } from "@oclif/core";
|
|
2
|
+
import { AuthenticatedCommand } from "../../lib/base-command.js";
|
|
3
|
+
import { apiClient } from "../../lib/api-client.js";
|
|
4
|
+
import { success, json, spinner, isJsonMode, } from "../../lib/output.js";
|
|
5
|
+
export default class LabelsAdd extends AuthenticatedCommand {
|
|
6
|
+
static description = "Add a label to a conversation";
|
|
7
|
+
static examples = [
|
|
8
|
+
"<%= config.bin %> labels add conv_abc123 lbl_def456",
|
|
9
|
+
"<%= config.bin %> labels add conv_abc123 lbl_def456 --json",
|
|
10
|
+
];
|
|
11
|
+
static args = {
|
|
12
|
+
conversationId: Args.string({
|
|
13
|
+
description: "Conversation ID",
|
|
14
|
+
required: true,
|
|
15
|
+
}),
|
|
16
|
+
labelId: Args.string({
|
|
17
|
+
description: "Label ID",
|
|
18
|
+
required: true,
|
|
19
|
+
}),
|
|
20
|
+
};
|
|
21
|
+
static flags = {
|
|
22
|
+
...AuthenticatedCommand.baseFlags,
|
|
23
|
+
};
|
|
24
|
+
async run() {
|
|
25
|
+
const { args } = await this.parse(LabelsAdd);
|
|
26
|
+
const spin = spinner("Adding label...");
|
|
27
|
+
spin.start();
|
|
28
|
+
try {
|
|
29
|
+
const response = await apiClient.post(`/api/v1/conversations/${encodeURIComponent(args.conversationId)}/labels`, { labelIds: [args.labelId] });
|
|
30
|
+
spin.stop();
|
|
31
|
+
if (isJsonMode()) {
|
|
32
|
+
json(response);
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
success("Label added to conversation", {
|
|
36
|
+
"Conversation ID": args.conversationId,
|
|
37
|
+
"Label ID": args.labelId,
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
catch (err) {
|
|
41
|
+
spin.stop();
|
|
42
|
+
throw err;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbW1hbmRzL2xhYmVscy9hZGQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNuQyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDcEQsT0FBTyxFQUNMLE9BQU8sRUFDUCxJQUFJLEVBQ0osT0FBTyxFQUNQLFVBQVUsR0FDWCxNQUFNLHFCQUFxQixDQUFDO0FBTzdCLE1BQU0sQ0FBQyxPQUFPLE9BQU8sU0FBVSxTQUFRLG9CQUFvQjtJQUN6RCxNQUFNLENBQUMsV0FBVyxHQUFHLCtCQUErQixDQUFDO0lBRXJELE1BQU0sQ0FBQyxRQUFRLEdBQUc7UUFDaEIscURBQXFEO1FBQ3JELDREQUE0RDtLQUM3RCxDQUFDO0lBRUYsTUFBTSxDQUFDLElBQUksR0FBRztRQUNaLGNBQWMsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDO1lBQzFCLFdBQVcsRUFBRSxpQkFBaUI7WUFDOUIsUUFBUSxFQUFFLElBQUk7U0FDZixDQUFDO1FBQ0YsT0FBTyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUM7WUFDbkIsV0FBVyxFQUFFLFVBQVU7WUFDdkIsUUFBUSxFQUFFLElBQUk7U0FDZixDQUFDO0tBQ0gsQ0FBQztJQUVGLE1BQU0sQ0FBQyxLQUFLLEdBQUc7UUFDYixHQUFHLG9CQUFvQixDQUFDLFNBQVM7S0FDbEMsQ0FBQztJQUVGLEtBQUssQ0FBQyxHQUFHO1FBQ1AsTUFBTSxFQUFFLElBQUksRUFBRSxHQUFHLE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUU3QyxNQUFNLElBQUksR0FBRyxPQUFPLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUN4QyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7UUFFYixJQUFJLENBQUM7WUFDSCxNQUFNLFFBQVEsR0FBRyxNQUFNLFNBQVMsQ0FBQyxJQUFJLENBQ25DLHlCQUF5QixrQkFBa0IsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsRUFDekUsRUFBRSxRQUFRLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FDN0IsQ0FBQztZQUVGLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUVaLElBQUksVUFBVSxFQUFFLEVBQUUsQ0FBQztnQkFDakIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUNmLE9BQU87WUFDVCxDQUFDO1lBRUQsT0FBTyxDQUFDLDZCQUE2QixFQUFFO2dCQUNyQyxpQkFBaUIsRUFBRSxJQUFJLENBQUMsY0FBYztnQkFDdEMsVUFBVSxFQUFFLElBQUksQ0FBQyxPQUFPO2FBQ3pCLENBQUMsQ0FBQztRQUNMLENBQUM7UUFBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO1lBQ2IsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ1osTUFBTSxHQUFHLENBQUM7UUFDWixDQUFDO0lBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFyZ3MgfSBmcm9tIFwiQG9jbGlmL2NvcmVcIjtcbmltcG9ydCB7IEF1dGhlbnRpY2F0ZWRDb21tYW5kIH0gZnJvbSBcIi4uLy4uL2xpYi9iYXNlLWNvbW1hbmQuanNcIjtcbmltcG9ydCB7IGFwaUNsaWVudCB9IGZyb20gXCIuLi8uLi9saWIvYXBpLWNsaWVudC5qc1wiO1xuaW1wb3J0IHtcbiAgc3VjY2VzcyxcbiAganNvbixcbiAgc3Bpbm5lcixcbiAgaXNKc29uTW9kZSxcbn0gZnJvbSBcIi4uLy4uL2xpYi9vdXRwdXQuanNcIjtcblxuaW50ZXJmYWNlIEFkZExhYmVsUmVzcG9uc2Uge1xuICBjb252ZXJzYXRpb25JZDogc3RyaW5nO1xuICBsYWJlbElkOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIExhYmVsc0FkZCBleHRlbmRzIEF1dGhlbnRpY2F0ZWRDb21tYW5kIHtcbiAgc3RhdGljIGRlc2NyaXB0aW9uID0gXCJBZGQgYSBsYWJlbCB0byBhIGNvbnZlcnNhdGlvblwiO1xuXG4gIHN0YXRpYyBleGFtcGxlcyA9IFtcbiAgICBcIjwlPSBjb25maWcuYmluICU+IGxhYmVscyBhZGQgY29udl9hYmMxMjMgbGJsX2RlZjQ1NlwiLFxuICAgIFwiPCU9IGNvbmZpZy5iaW4gJT4gbGFiZWxzIGFkZCBjb252X2FiYzEyMyBsYmxfZGVmNDU2IC0tanNvblwiLFxuICBdO1xuXG4gIHN0YXRpYyBhcmdzID0ge1xuICAgIGNvbnZlcnNhdGlvbklkOiBBcmdzLnN0cmluZyh7XG4gICAgICBkZXNjcmlwdGlvbjogXCJDb252ZXJzYXRpb24gSURcIixcbiAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgIH0pLFxuICAgIGxhYmVsSWQ6IEFyZ3Muc3RyaW5nKHtcbiAgICAgIGRlc2NyaXB0aW9uOiBcIkxhYmVsIElEXCIsXG4gICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICB9KSxcbiAgfTtcblxuICBzdGF0aWMgZmxhZ3MgPSB7XG4gICAgLi4uQXV0aGVudGljYXRlZENvbW1hbmQuYmFzZUZsYWdzLFxuICB9O1xuXG4gIGFzeW5jIHJ1bigpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCB7IGFyZ3MgfSA9IGF3YWl0IHRoaXMucGFyc2UoTGFiZWxzQWRkKTtcblxuICAgIGNvbnN0IHNwaW4gPSBzcGlubmVyKFwiQWRkaW5nIGxhYmVsLi4uXCIpO1xuICAgIHNwaW4uc3RhcnQoKTtcblxuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGFwaUNsaWVudC5wb3N0PEFkZExhYmVsUmVzcG9uc2U+KFxuICAgICAgICBgL2FwaS92MS9jb252ZXJzYXRpb25zLyR7ZW5jb2RlVVJJQ29tcG9uZW50KGFyZ3MuY29udmVyc2F0aW9uSWQpfS9sYWJlbHNgLFxuICAgICAgICB7IGxhYmVsSWRzOiBbYXJncy5sYWJlbElkXSB9LFxuICAgICAgKTtcblxuICAgICAgc3Bpbi5zdG9wKCk7XG5cbiAgICAgIGlmIChpc0pzb25Nb2RlKCkpIHtcbiAgICAgICAganNvbihyZXNwb25zZSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgc3VjY2VzcyhcIkxhYmVsIGFkZGVkIHRvIGNvbnZlcnNhdGlvblwiLCB7XG4gICAgICAgIFwiQ29udmVyc2F0aW9uIElEXCI6IGFyZ3MuY29udmVyc2F0aW9uSWQsXG4gICAgICAgIFwiTGFiZWwgSURcIjogYXJncy5sYWJlbElkLFxuICAgICAgfSk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBzcGluLnN0b3AoKTtcbiAgICAgIHRocm93IGVycjtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { AuthenticatedCommand } from "../../lib/base-command.js";
|
|
2
|
+
export default class LabelsRemove extends AuthenticatedCommand {
|
|
3
|
+
static description: string;
|
|
4
|
+
static examples: string[];
|
|
5
|
+
static args: {
|
|
6
|
+
conversationId: import("@oclif/core/lib/interfaces/parser.js").Arg<string, Record<string, unknown>>;
|
|
7
|
+
labelId: import("@oclif/core/lib/interfaces/parser.js").Arg<string, Record<string, unknown>>;
|
|
8
|
+
};
|
|
9
|
+
static flags: {
|
|
10
|
+
json: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
|
|
11
|
+
quiet: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
|
|
12
|
+
};
|
|
13
|
+
run(): Promise<void>;
|
|
14
|
+
}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { Args } from "@oclif/core";
|
|
2
|
+
import { AuthenticatedCommand } from "../../lib/base-command.js";
|
|
3
|
+
import { apiClient } from "../../lib/api-client.js";
|
|
4
|
+
import { success, json, spinner, isJsonMode, } from "../../lib/output.js";
|
|
5
|
+
export default class LabelsRemove extends AuthenticatedCommand {
|
|
6
|
+
static description = "Remove a label from a conversation";
|
|
7
|
+
static examples = [
|
|
8
|
+
"<%= config.bin %> labels remove conv_abc123 lbl_def456",
|
|
9
|
+
"<%= config.bin %> labels remove conv_abc123 lbl_def456 --json",
|
|
10
|
+
];
|
|
11
|
+
static args = {
|
|
12
|
+
conversationId: Args.string({
|
|
13
|
+
description: "Conversation ID",
|
|
14
|
+
required: true,
|
|
15
|
+
}),
|
|
16
|
+
labelId: Args.string({
|
|
17
|
+
description: "Label ID",
|
|
18
|
+
required: true,
|
|
19
|
+
}),
|
|
20
|
+
};
|
|
21
|
+
static flags = {
|
|
22
|
+
...AuthenticatedCommand.baseFlags,
|
|
23
|
+
};
|
|
24
|
+
async run() {
|
|
25
|
+
const { args } = await this.parse(LabelsRemove);
|
|
26
|
+
const spin = spinner("Removing label...");
|
|
27
|
+
spin.start();
|
|
28
|
+
try {
|
|
29
|
+
const response = await apiClient.delete(`/api/v1/conversations/${encodeURIComponent(args.conversationId)}/labels/${encodeURIComponent(args.labelId)}`);
|
|
30
|
+
spin.stop();
|
|
31
|
+
if (isJsonMode()) {
|
|
32
|
+
json(response);
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
success("Label removed from conversation", {
|
|
36
|
+
"Conversation ID": args.conversationId,
|
|
37
|
+
"Label ID": args.labelId,
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
catch (err) {
|
|
41
|
+
spin.stop();
|
|
42
|
+
throw err;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVtb3ZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbW1hbmRzL2xhYmVscy9yZW1vdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNuQyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDcEQsT0FBTyxFQUNMLE9BQU8sRUFDUCxJQUFJLEVBQ0osT0FBTyxFQUNQLFVBQVUsR0FDWCxNQUFNLHFCQUFxQixDQUFDO0FBRTdCLE1BQU0sQ0FBQyxPQUFPLE9BQU8sWUFBYSxTQUFRLG9CQUFvQjtJQUM1RCxNQUFNLENBQUMsV0FBVyxHQUFHLG9DQUFvQyxDQUFDO0lBRTFELE1BQU0sQ0FBQyxRQUFRLEdBQUc7UUFDaEIsd0RBQXdEO1FBQ3hELCtEQUErRDtLQUNoRSxDQUFDO0lBRUYsTUFBTSxDQUFDLElBQUksR0FBRztRQUNaLGNBQWMsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDO1lBQzFCLFdBQVcsRUFBRSxpQkFBaUI7WUFDOUIsUUFBUSxFQUFFLElBQUk7U0FDZixDQUFDO1FBQ0YsT0FBTyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUM7WUFDbkIsV0FBVyxFQUFFLFVBQVU7WUFDdkIsUUFBUSxFQUFFLElBQUk7U0FDZixDQUFDO0tBQ0gsQ0FBQztJQUVGLE1BQU0sQ0FBQyxLQUFLLEdBQUc7UUFDYixHQUFHLG9CQUFvQixDQUFDLFNBQVM7S0FDbEMsQ0FBQztJQUVGLEtBQUssQ0FBQyxHQUFHO1FBQ1AsTUFBTSxFQUFFLElBQUksRUFBRSxHQUFHLE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUVoRCxNQUFNLElBQUksR0FBRyxPQUFPLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUMxQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7UUFFYixJQUFJLENBQUM7WUFDSCxNQUFNLFFBQVEsR0FBRyxNQUFNLFNBQVMsQ0FBQyxNQUFNLENBQ3JDLHlCQUF5QixrQkFBa0IsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLFdBQVcsa0JBQWtCLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQzlHLENBQUM7WUFFRixJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7WUFFWixJQUFJLFVBQVUsRUFBRSxFQUFFLENBQUM7Z0JBQ2pCLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDZixPQUFPO1lBQ1QsQ0FBQztZQUVELE9BQU8sQ0FBQyxpQ0FBaUMsRUFBRTtnQkFDekMsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLGNBQWM7Z0JBQ3RDLFVBQVUsRUFBRSxJQUFJLENBQUMsT0FBTzthQUN6QixDQUFDLENBQUM7UUFDTCxDQUFDO1FBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztZQUNiLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNaLE1BQU0sR0FBRyxDQUFDO1FBQ1osQ0FBQztJQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBcmdzIH0gZnJvbSBcIkBvY2xpZi9jb3JlXCI7XG5pbXBvcnQgeyBBdXRoZW50aWNhdGVkQ29tbWFuZCB9IGZyb20gXCIuLi8uLi9saWIvYmFzZS1jb21tYW5kLmpzXCI7XG5pbXBvcnQgeyBhcGlDbGllbnQgfSBmcm9tIFwiLi4vLi4vbGliL2FwaS1jbGllbnQuanNcIjtcbmltcG9ydCB7XG4gIHN1Y2Nlc3MsXG4gIGpzb24sXG4gIHNwaW5uZXIsXG4gIGlzSnNvbk1vZGUsXG59IGZyb20gXCIuLi8uLi9saWIvb3V0cHV0LmpzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIExhYmVsc1JlbW92ZSBleHRlbmRzIEF1dGhlbnRpY2F0ZWRDb21tYW5kIHtcbiAgc3RhdGljIGRlc2NyaXB0aW9uID0gXCJSZW1vdmUgYSBsYWJlbCBmcm9tIGEgY29udmVyc2F0aW9uXCI7XG5cbiAgc3RhdGljIGV4YW1wbGVzID0gW1xuICAgIFwiPCU9IGNvbmZpZy5iaW4gJT4gbGFiZWxzIHJlbW92ZSBjb252X2FiYzEyMyBsYmxfZGVmNDU2XCIsXG4gICAgXCI8JT0gY29uZmlnLmJpbiAlPiBsYWJlbHMgcmVtb3ZlIGNvbnZfYWJjMTIzIGxibF9kZWY0NTYgLS1qc29uXCIsXG4gIF07XG5cbiAgc3RhdGljIGFyZ3MgPSB7XG4gICAgY29udmVyc2F0aW9uSWQ6IEFyZ3Muc3RyaW5nKHtcbiAgICAgIGRlc2NyaXB0aW9uOiBcIkNvbnZlcnNhdGlvbiBJRFwiLFxuICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgfSksXG4gICAgbGFiZWxJZDogQXJncy5zdHJpbmcoe1xuICAgICAgZGVzY3JpcHRpb246IFwiTGFiZWwgSURcIixcbiAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgIH0pLFxuICB9O1xuXG4gIHN0YXRpYyBmbGFncyA9IHtcbiAgICAuLi5BdXRoZW50aWNhdGVkQ29tbWFuZC5iYXNlRmxhZ3MsXG4gIH07XG5cbiAgYXN5bmMgcnVuKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHsgYXJncyB9ID0gYXdhaXQgdGhpcy5wYXJzZShMYWJlbHNSZW1vdmUpO1xuXG4gICAgY29uc3Qgc3BpbiA9IHNwaW5uZXIoXCJSZW1vdmluZyBsYWJlbC4uLlwiKTtcbiAgICBzcGluLnN0YXJ0KCk7XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBhcGlDbGllbnQuZGVsZXRlPFJlY29yZDxzdHJpbmcsIHVua25vd24+PihcbiAgICAgICAgYC9hcGkvdjEvY29udmVyc2F0aW9ucy8ke2VuY29kZVVSSUNvbXBvbmVudChhcmdzLmNvbnZlcnNhdGlvbklkKX0vbGFiZWxzLyR7ZW5jb2RlVVJJQ29tcG9uZW50KGFyZ3MubGFiZWxJZCl9YCxcbiAgICAgICk7XG5cbiAgICAgIHNwaW4uc3RvcCgpO1xuXG4gICAgICBpZiAoaXNKc29uTW9kZSgpKSB7XG4gICAgICAgIGpzb24ocmVzcG9uc2UpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHN1Y2Nlc3MoXCJMYWJlbCByZW1vdmVkIGZyb20gY29udmVyc2F0aW9uXCIsIHtcbiAgICAgICAgXCJDb252ZXJzYXRpb24gSURcIjogYXJncy5jb252ZXJzYXRpb25JZCxcbiAgICAgICAgXCJMYWJlbCBJRFwiOiBhcmdzLmxhYmVsSWQsXG4gICAgICB9KTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIHNwaW4uc3RvcCgpO1xuICAgICAgdGhyb3cgZXJyO1xuICAgIH1cbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { AuthenticatedCommand } from "../../lib/base-command.js";
|
|
2
|
+
export default class RulesCreate extends AuthenticatedCommand {
|
|
3
|
+
static description: string;
|
|
4
|
+
static examples: string[];
|
|
5
|
+
static flags: {
|
|
6
|
+
name: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
|
|
7
|
+
intent: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string[] | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
|
|
8
|
+
sentiment: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string[] | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
|
|
9
|
+
label: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string[] | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
|
|
10
|
+
close: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
|
|
11
|
+
priority: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<number, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
|
|
12
|
+
json: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
|
|
13
|
+
quiet: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
|
|
14
|
+
};
|
|
15
|
+
run(): Promise<void>;
|
|
16
|
+
}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { Flags } from "@oclif/core";
|
|
2
|
+
import { AuthenticatedCommand } from "../../lib/base-command.js";
|
|
3
|
+
import { apiClient } from "../../lib/api-client.js";
|
|
4
|
+
import { json, isJsonMode, success, keyValue, header } from "../../lib/output.js";
|
|
5
|
+
export default class RulesCreate extends AuthenticatedCommand {
|
|
6
|
+
static description = "Create an auto-labeling rule";
|
|
7
|
+
static examples = [
|
|
8
|
+
'<%= config.bin %> rules create --name "Flag complaints" --intent complaint --label label_abc',
|
|
9
|
+
'<%= config.bin %> rules create --name "Close opt-outs" --intent opt_out --close',
|
|
10
|
+
'<%= config.bin %> rules create --name "Negative" --sentiment negative --label label_xyz --priority 1',
|
|
11
|
+
];
|
|
12
|
+
static flags = {
|
|
13
|
+
...AuthenticatedCommand.baseFlags,
|
|
14
|
+
name: Flags.string({
|
|
15
|
+
description: "Rule name",
|
|
16
|
+
required: true,
|
|
17
|
+
}),
|
|
18
|
+
intent: Flags.string({
|
|
19
|
+
description: "Match intent (question, appointment, complaint, order_status, feedback, opt_out, greeting, confirmation, other)",
|
|
20
|
+
multiple: true,
|
|
21
|
+
}),
|
|
22
|
+
sentiment: Flags.string({
|
|
23
|
+
description: "Match sentiment (positive, neutral, negative)",
|
|
24
|
+
multiple: true,
|
|
25
|
+
}),
|
|
26
|
+
label: Flags.string({
|
|
27
|
+
description: "Label ID to apply when rule matches",
|
|
28
|
+
multiple: true,
|
|
29
|
+
}),
|
|
30
|
+
close: Flags.boolean({
|
|
31
|
+
description: "Close the conversation when rule matches",
|
|
32
|
+
default: false,
|
|
33
|
+
}),
|
|
34
|
+
priority: Flags.integer({
|
|
35
|
+
description: "Priority (lower runs first)",
|
|
36
|
+
default: 0,
|
|
37
|
+
}),
|
|
38
|
+
};
|
|
39
|
+
async run() {
|
|
40
|
+
const { flags } = await this.parse(RulesCreate);
|
|
41
|
+
const conditions = {};
|
|
42
|
+
if (flags.intent?.length)
|
|
43
|
+
conditions.intent = flags.intent.length === 1 ? flags.intent[0] : flags.intent;
|
|
44
|
+
if (flags.sentiment?.length)
|
|
45
|
+
conditions.sentiment = flags.sentiment.length === 1 ? flags.sentiment[0] : flags.sentiment;
|
|
46
|
+
const actions = {};
|
|
47
|
+
if (flags.label?.length)
|
|
48
|
+
actions.addLabels = flags.label;
|
|
49
|
+
if (flags.close)
|
|
50
|
+
actions.closeConversation = true;
|
|
51
|
+
const rule = await apiClient.post("/api/v1/rules", {
|
|
52
|
+
name: flags.name,
|
|
53
|
+
conditions,
|
|
54
|
+
actions,
|
|
55
|
+
priority: flags.priority,
|
|
56
|
+
});
|
|
57
|
+
if (isJsonMode()) {
|
|
58
|
+
json(rule);
|
|
59
|
+
return;
|
|
60
|
+
}
|
|
61
|
+
success(`Rule "${flags.name}" created`);
|
|
62
|
+
header("Rule Details");
|
|
63
|
+
keyValue({
|
|
64
|
+
ID: rule.id,
|
|
65
|
+
Name: rule.name,
|
|
66
|
+
Priority: rule.priority,
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbW1hbmRzL3J1bGVzL2NyZWF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRWxGLE1BQU0sQ0FBQyxPQUFPLE9BQU8sV0FBWSxTQUFRLG9CQUFvQjtJQUMzRCxNQUFNLENBQUMsV0FBVyxHQUFHLDhCQUE4QixDQUFDO0lBRXBELE1BQU0sQ0FBQyxRQUFRLEdBQUc7UUFDaEIsOEZBQThGO1FBQzlGLGlGQUFpRjtRQUNqRixzR0FBc0c7S0FDdkcsQ0FBQztJQUVGLE1BQU0sQ0FBQyxLQUFLLEdBQUc7UUFDYixHQUFHLG9CQUFvQixDQUFDLFNBQVM7UUFDakMsSUFBSSxFQUFFLEtBQUssQ0FBQyxNQUFNLENBQUM7WUFDakIsV0FBVyxFQUFFLFdBQVc7WUFDeEIsUUFBUSxFQUFFLElBQUk7U0FDZixDQUFDO1FBQ0YsTUFBTSxFQUFFLEtBQUssQ0FBQyxNQUFNLENBQUM7WUFDbkIsV0FBVyxFQUFFLGlIQUFpSDtZQUM5SCxRQUFRLEVBQUUsSUFBSTtTQUNmLENBQUM7UUFDRixTQUFTLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQztZQUN0QixXQUFXLEVBQUUsK0NBQStDO1lBQzVELFFBQVEsRUFBRSxJQUFJO1NBQ2YsQ0FBQztRQUNGLEtBQUssRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDO1lBQ2xCLFdBQVcsRUFBRSxxQ0FBcUM7WUFDbEQsUUFBUSxFQUFFLElBQUk7U0FDZixDQUFDO1FBQ0YsS0FBSyxFQUFFLEtBQUssQ0FBQyxPQUFPLENBQUM7WUFDbkIsV0FBVyxFQUFFLDBDQUEwQztZQUN2RCxPQUFPLEVBQUUsS0FBSztTQUNmLENBQUM7UUFDRixRQUFRLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQztZQUN0QixXQUFXLEVBQUUsNkJBQTZCO1lBQzFDLE9BQU8sRUFBRSxDQUFDO1NBQ1gsQ0FBQztLQUNILENBQUM7SUFFRixLQUFLLENBQUMsR0FBRztRQUNQLE1BQU0sRUFBRSxLQUFLLEVBQUUsR0FBRyxNQUFNLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7UUFFaEQsTUFBTSxVQUFVLEdBQTRCLEVBQUUsQ0FBQztRQUMvQyxJQUFJLEtBQUssQ0FBQyxNQUFNLEVBQUUsTUFBTTtZQUFFLFVBQVUsQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDO1FBQ3pHLElBQUksS0FBSyxDQUFDLFNBQVMsRUFBRSxNQUFNO1lBQUUsVUFBVSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUM7UUFFeEgsTUFBTSxPQUFPLEdBQTRCLEVBQUUsQ0FBQztRQUM1QyxJQUFJLEtBQUssQ0FBQyxLQUFLLEVBQUUsTUFBTTtZQUFFLE9BQU8sQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQztRQUN6RCxJQUFJLEtBQUssQ0FBQyxLQUFLO1lBQUUsT0FBTyxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQztRQUVsRCxNQUFNLElBQUksR0FBRyxNQUFNLFNBQVMsQ0FBQyxJQUFJLENBQTBCLGVBQWUsRUFBRTtZQUMxRSxJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUk7WUFDaEIsVUFBVTtZQUNWLE9BQU87WUFDUCxRQUFRLEVBQUUsS0FBSyxDQUFDLFFBQVE7U0FDekIsQ0FBQyxDQUFDO1FBRUgsSUFBSSxVQUFVLEVBQUUsRUFBRSxDQUFDO1lBQ2pCLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNYLE9BQU87UUFDVCxDQUFDO1FBRUQsT0FBTyxDQUFDLFNBQVMsS0FBSyxDQUFDLElBQUksV0FBVyxDQUFDLENBQUM7UUFDeEMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ3ZCLFFBQVEsQ0FBQztZQUNQLEVBQUUsRUFBRSxJQUFJLENBQUMsRUFBWTtZQUNyQixJQUFJLEVBQUUsSUFBSSxDQUFDLElBQWM7WUFDekIsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFrQjtTQUNsQyxDQUFDLENBQUM7SUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRmxhZ3MgfSBmcm9tIFwiQG9jbGlmL2NvcmVcIjtcbmltcG9ydCB7IEF1dGhlbnRpY2F0ZWRDb21tYW5kIH0gZnJvbSBcIi4uLy4uL2xpYi9iYXNlLWNvbW1hbmQuanNcIjtcbmltcG9ydCB7IGFwaUNsaWVudCB9IGZyb20gXCIuLi8uLi9saWIvYXBpLWNsaWVudC5qc1wiO1xuaW1wb3J0IHsganNvbiwgaXNKc29uTW9kZSwgc3VjY2Vzcywga2V5VmFsdWUsIGhlYWRlciB9IGZyb20gXCIuLi8uLi9saWIvb3V0cHV0LmpzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFJ1bGVzQ3JlYXRlIGV4dGVuZHMgQXV0aGVudGljYXRlZENvbW1hbmQge1xuICBzdGF0aWMgZGVzY3JpcHRpb24gPSBcIkNyZWF0ZSBhbiBhdXRvLWxhYmVsaW5nIHJ1bGVcIjtcblxuICBzdGF0aWMgZXhhbXBsZXMgPSBbXG4gICAgJzwlPSBjb25maWcuYmluICU+IHJ1bGVzIGNyZWF0ZSAtLW5hbWUgXCJGbGFnIGNvbXBsYWludHNcIiAtLWludGVudCBjb21wbGFpbnQgLS1sYWJlbCBsYWJlbF9hYmMnLFxuICAgICc8JT0gY29uZmlnLmJpbiAlPiBydWxlcyBjcmVhdGUgLS1uYW1lIFwiQ2xvc2Ugb3B0LW91dHNcIiAtLWludGVudCBvcHRfb3V0IC0tY2xvc2UnLFxuICAgICc8JT0gY29uZmlnLmJpbiAlPiBydWxlcyBjcmVhdGUgLS1uYW1lIFwiTmVnYXRpdmVcIiAtLXNlbnRpbWVudCBuZWdhdGl2ZSAtLWxhYmVsIGxhYmVsX3h5eiAtLXByaW9yaXR5IDEnLFxuICBdO1xuXG4gIHN0YXRpYyBmbGFncyA9IHtcbiAgICAuLi5BdXRoZW50aWNhdGVkQ29tbWFuZC5iYXNlRmxhZ3MsXG4gICAgbmFtZTogRmxhZ3Muc3RyaW5nKHtcbiAgICAgIGRlc2NyaXB0aW9uOiBcIlJ1bGUgbmFtZVwiLFxuICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgfSksXG4gICAgaW50ZW50OiBGbGFncy5zdHJpbmcoe1xuICAgICAgZGVzY3JpcHRpb246IFwiTWF0Y2ggaW50ZW50IChxdWVzdGlvbiwgYXBwb2ludG1lbnQsIGNvbXBsYWludCwgb3JkZXJfc3RhdHVzLCBmZWVkYmFjaywgb3B0X291dCwgZ3JlZXRpbmcsIGNvbmZpcm1hdGlvbiwgb3RoZXIpXCIsXG4gICAgICBtdWx0aXBsZTogdHJ1ZSxcbiAgICB9KSxcbiAgICBzZW50aW1lbnQ6IEZsYWdzLnN0cmluZyh7XG4gICAgICBkZXNjcmlwdGlvbjogXCJNYXRjaCBzZW50aW1lbnQgKHBvc2l0aXZlLCBuZXV0cmFsLCBuZWdhdGl2ZSlcIixcbiAgICAgIG11bHRpcGxlOiB0cnVlLFxuICAgIH0pLFxuICAgIGxhYmVsOiBGbGFncy5zdHJpbmcoe1xuICAgICAgZGVzY3JpcHRpb246IFwiTGFiZWwgSUQgdG8gYXBwbHkgd2hlbiBydWxlIG1hdGNoZXNcIixcbiAgICAgIG11bHRpcGxlOiB0cnVlLFxuICAgIH0pLFxuICAgIGNsb3NlOiBGbGFncy5ib29sZWFuKHtcbiAgICAgIGRlc2NyaXB0aW9uOiBcIkNsb3NlIHRoZSBjb252ZXJzYXRpb24gd2hlbiBydWxlIG1hdGNoZXNcIixcbiAgICAgIGRlZmF1bHQ6IGZhbHNlLFxuICAgIH0pLFxuICAgIHByaW9yaXR5OiBGbGFncy5pbnRlZ2VyKHtcbiAgICAgIGRlc2NyaXB0aW9uOiBcIlByaW9yaXR5IChsb3dlciBydW5zIGZpcnN0KVwiLFxuICAgICAgZGVmYXVsdDogMCxcbiAgICB9KSxcbiAgfTtcblxuICBhc3luYyBydW4oKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgeyBmbGFncyB9ID0gYXdhaXQgdGhpcy5wYXJzZShSdWxlc0NyZWF0ZSk7XG5cbiAgICBjb25zdCBjb25kaXRpb25zOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHt9O1xuICAgIGlmIChmbGFncy5pbnRlbnQ/Lmxlbmd0aCkgY29uZGl0aW9ucy5pbnRlbnQgPSBmbGFncy5pbnRlbnQubGVuZ3RoID09PSAxID8gZmxhZ3MuaW50ZW50WzBdIDogZmxhZ3MuaW50ZW50O1xuICAgIGlmIChmbGFncy5zZW50aW1lbnQ/Lmxlbmd0aCkgY29uZGl0aW9ucy5zZW50aW1lbnQgPSBmbGFncy5zZW50aW1lbnQubGVuZ3RoID09PSAxID8gZmxhZ3Muc2VudGltZW50WzBdIDogZmxhZ3Muc2VudGltZW50O1xuXG4gICAgY29uc3QgYWN0aW9uczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7fTtcbiAgICBpZiAoZmxhZ3MubGFiZWw/Lmxlbmd0aCkgYWN0aW9ucy5hZGRMYWJlbHMgPSBmbGFncy5sYWJlbDtcbiAgICBpZiAoZmxhZ3MuY2xvc2UpIGFjdGlvbnMuY2xvc2VDb252ZXJzYXRpb24gPSB0cnVlO1xuXG4gICAgY29uc3QgcnVsZSA9IGF3YWl0IGFwaUNsaWVudC5wb3N0PFJlY29yZDxzdHJpbmcsIHVua25vd24+PihcIi9hcGkvdjEvcnVsZXNcIiwge1xuICAgICAgbmFtZTogZmxhZ3MubmFtZSxcbiAgICAgIGNvbmRpdGlvbnMsXG4gICAgICBhY3Rpb25zLFxuICAgICAgcHJpb3JpdHk6IGZsYWdzLnByaW9yaXR5LFxuICAgIH0pO1xuXG4gICAgaWYgKGlzSnNvbk1vZGUoKSkge1xuICAgICAganNvbihydWxlKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBzdWNjZXNzKGBSdWxlIFwiJHtmbGFncy5uYW1lfVwiIGNyZWF0ZWRgKTtcbiAgICBoZWFkZXIoXCJSdWxlIERldGFpbHNcIik7XG4gICAga2V5VmFsdWUoe1xuICAgICAgSUQ6IHJ1bGUuaWQgYXMgc3RyaW5nLFxuICAgICAgTmFtZTogcnVsZS5uYW1lIGFzIHN0cmluZyxcbiAgICAgIFByaW9yaXR5OiBydWxlLnByaW9yaXR5IGFzIG51bWJlcixcbiAgICB9KTtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { AuthenticatedCommand } from "../../lib/base-command.js";
|
|
2
|
+
export default class RulesDelete extends AuthenticatedCommand {
|
|
3
|
+
static description: string;
|
|
4
|
+
static examples: string[];
|
|
5
|
+
static args: {
|
|
6
|
+
id: import("@oclif/core/lib/interfaces/parser.js").Arg<string, Record<string, unknown>>;
|
|
7
|
+
};
|
|
8
|
+
static flags: {
|
|
9
|
+
json: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
|
|
10
|
+
quiet: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
|
|
11
|
+
};
|
|
12
|
+
run(): Promise<void>;
|
|
13
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { Args } from "@oclif/core";
|
|
2
|
+
import { AuthenticatedCommand } from "../../lib/base-command.js";
|
|
3
|
+
import { apiClient } from "../../lib/api-client.js";
|
|
4
|
+
import { json, isJsonMode, success } from "../../lib/output.js";
|
|
5
|
+
export default class RulesDelete extends AuthenticatedCommand {
|
|
6
|
+
static description = "Delete an auto-labeling rule";
|
|
7
|
+
static examples = [
|
|
8
|
+
"<%= config.bin %> rules delete rule_abc123",
|
|
9
|
+
];
|
|
10
|
+
static args = {
|
|
11
|
+
id: Args.string({
|
|
12
|
+
description: "Rule ID",
|
|
13
|
+
required: true,
|
|
14
|
+
}),
|
|
15
|
+
};
|
|
16
|
+
static flags = {
|
|
17
|
+
...AuthenticatedCommand.baseFlags,
|
|
18
|
+
};
|
|
19
|
+
async run() {
|
|
20
|
+
const { args } = await this.parse(RulesDelete);
|
|
21
|
+
await apiClient.delete(`/api/v1/rules/${encodeURIComponent(args.id)}`);
|
|
22
|
+
if (isJsonMode()) {
|
|
23
|
+
json({ success: true, id: args.id });
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
success("Rule deleted");
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVsZXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbW1hbmRzL3J1bGVzL2RlbGV0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ25DLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUVoRSxNQUFNLENBQUMsT0FBTyxPQUFPLFdBQVksU0FBUSxvQkFBb0I7SUFDM0QsTUFBTSxDQUFDLFdBQVcsR0FBRyw4QkFBOEIsQ0FBQztJQUVwRCxNQUFNLENBQUMsUUFBUSxHQUFHO1FBQ2hCLDRDQUE0QztLQUM3QyxDQUFDO0lBRUYsTUFBTSxDQUFDLElBQUksR0FBRztRQUNaLEVBQUUsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDO1lBQ2QsV0FBVyxFQUFFLFNBQVM7WUFDdEIsUUFBUSxFQUFFLElBQUk7U0FDZixDQUFDO0tBQ0gsQ0FBQztJQUVGLE1BQU0sQ0FBQyxLQUFLLEdBQUc7UUFDYixHQUFHLG9CQUFvQixDQUFDLFNBQVM7S0FDbEMsQ0FBQztJQUVGLEtBQUssQ0FBQyxHQUFHO1FBQ1AsTUFBTSxFQUFFLElBQUksRUFBRSxHQUFHLE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUUvQyxNQUFNLFNBQVMsQ0FBQyxNQUFNLENBQUMsaUJBQWlCLGtCQUFrQixDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7UUFFdkUsSUFBSSxVQUFVLEVBQUUsRUFBRSxDQUFDO1lBQ2pCLElBQUksQ0FBQyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ3JDLE9BQU87UUFDVCxDQUFDO1FBRUQsT0FBTyxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQzFCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBcmdzIH0gZnJvbSBcIkBvY2xpZi9jb3JlXCI7XG5pbXBvcnQgeyBBdXRoZW50aWNhdGVkQ29tbWFuZCB9IGZyb20gXCIuLi8uLi9saWIvYmFzZS1jb21tYW5kLmpzXCI7XG5pbXBvcnQgeyBhcGlDbGllbnQgfSBmcm9tIFwiLi4vLi4vbGliL2FwaS1jbGllbnQuanNcIjtcbmltcG9ydCB7IGpzb24sIGlzSnNvbk1vZGUsIHN1Y2Nlc3MgfSBmcm9tIFwiLi4vLi4vbGliL291dHB1dC5qc1wiO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBSdWxlc0RlbGV0ZSBleHRlbmRzIEF1dGhlbnRpY2F0ZWRDb21tYW5kIHtcbiAgc3RhdGljIGRlc2NyaXB0aW9uID0gXCJEZWxldGUgYW4gYXV0by1sYWJlbGluZyBydWxlXCI7XG5cbiAgc3RhdGljIGV4YW1wbGVzID0gW1xuICAgIFwiPCU9IGNvbmZpZy5iaW4gJT4gcnVsZXMgZGVsZXRlIHJ1bGVfYWJjMTIzXCIsXG4gIF07XG5cbiAgc3RhdGljIGFyZ3MgPSB7XG4gICAgaWQ6IEFyZ3Muc3RyaW5nKHtcbiAgICAgIGRlc2NyaXB0aW9uOiBcIlJ1bGUgSURcIixcbiAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgIH0pLFxuICB9O1xuXG4gIHN0YXRpYyBmbGFncyA9IHtcbiAgICAuLi5BdXRoZW50aWNhdGVkQ29tbWFuZC5iYXNlRmxhZ3MsXG4gIH07XG5cbiAgYXN5bmMgcnVuKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHsgYXJncyB9ID0gYXdhaXQgdGhpcy5wYXJzZShSdWxlc0RlbGV0ZSk7XG5cbiAgICBhd2FpdCBhcGlDbGllbnQuZGVsZXRlKGAvYXBpL3YxL3J1bGVzLyR7ZW5jb2RlVVJJQ29tcG9uZW50KGFyZ3MuaWQpfWApO1xuXG4gICAgaWYgKGlzSnNvbk1vZGUoKSkge1xuICAgICAganNvbih7IHN1Y2Nlc3M6IHRydWUsIGlkOiBhcmdzLmlkIH0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHN1Y2Nlc3MoXCJSdWxlIGRlbGV0ZWRcIik7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { AuthenticatedCommand } from "../../lib/base-command.js";
|
|
2
|
+
export default class RulesList extends AuthenticatedCommand {
|
|
3
|
+
static description: string;
|
|
4
|
+
static examples: string[];
|
|
5
|
+
static flags: {
|
|
6
|
+
json: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
|
|
7
|
+
quiet: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
|
|
8
|
+
};
|
|
9
|
+
run(): Promise<void>;
|
|
10
|
+
}
|