@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.
Files changed (39) hide show
  1. package/dist/commands/campaigns/schedule.js +20 -10
  2. package/dist/commands/conversations/context.d.ts +15 -0
  3. package/dist/commands/conversations/context.js +55 -0
  4. package/dist/commands/conversations/suggest-replies.d.ts +13 -0
  5. package/dist/commands/conversations/suggest-replies.js +50 -0
  6. package/dist/commands/conversations/update.d.ts +15 -0
  7. package/dist/commands/conversations/update.js +56 -0
  8. package/dist/commands/doctor.d.ts +1 -0
  9. package/dist/commands/doctor.js +45 -1
  10. package/dist/commands/drafts/list.js +2 -2
  11. package/dist/commands/enterprise/generate-business-page.d.ts +16 -0
  12. package/dist/commands/enterprise/generate-business-page.js +62 -0
  13. package/dist/commands/enterprise/upload-verification-document.d.ts +13 -0
  14. package/dist/commands/enterprise/upload-verification-document.js +109 -0
  15. package/dist/commands/events/listen.d.ts +11 -0
  16. package/dist/commands/events/listen.js +82 -0
  17. package/dist/commands/labels/add.d.ts +14 -0
  18. package/dist/commands/labels/add.js +46 -0
  19. package/dist/commands/labels/remove.d.ts +14 -0
  20. package/dist/commands/labels/remove.js +46 -0
  21. package/dist/commands/rules/create.d.ts +16 -0
  22. package/dist/commands/rules/create.js +70 -0
  23. package/dist/commands/rules/delete.d.ts +13 -0
  24. package/dist/commands/rules/delete.js +29 -0
  25. package/dist/commands/rules/index.d.ts +10 -0
  26. package/dist/commands/rules/index.js +56 -0
  27. package/dist/commands/sms/batch.js +1 -1
  28. package/dist/commands/sms/schedule.d.ts +3 -3
  29. package/dist/commands/sms/schedule.js +117 -27
  30. package/dist/commands/sms/search.d.ts +16 -0
  31. package/dist/commands/sms/search.js +105 -0
  32. package/dist/commands/sms/send.d.ts +1 -1
  33. package/dist/commands/sms/send.js +55 -10
  34. package/dist/commands/templates/update.d.ts +15 -0
  35. package/dist/commands/templates/update.js +70 -0
  36. package/dist/commands/webhooks/listen.js +5 -1
  37. package/dist/lib/base-command.js +2 -2
  38. package/oclif.manifest.json +1388 -644
  39. 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBsb2FkLXZlcmlmaWNhdGlvbi1kb2N1bWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21tYW5kcy9lbnRlcnByaXNlL3VwbG9hZC12ZXJpZmljYXRpb24tZG9jdW1lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNwQyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDekUsT0FBTyxFQUNMLFlBQVksRUFDWixjQUFjLEVBQ2QsaUJBQWlCLEdBQ2xCLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUNMLFFBQVEsRUFDUixtQkFBbUIsR0FDcEIsTUFBTSx5QkFBeUIsQ0FBQztBQUNqQyxPQUFPLEtBQUssRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUM5QixPQUFPLEtBQUssSUFBSSxNQUFNLFdBQVcsQ0FBQztBQU9sQyxNQUFNLENBQUMsT0FBTyxPQUFPLG9DQUFxQyxTQUFRLG9CQUFvQjtJQUNwRixNQUFNLENBQUMsV0FBVyxHQUFHLCtDQUErQyxDQUFDO0lBRXJFLE1BQU0sQ0FBQyxRQUFRLEdBQUc7UUFDaEIsbUZBQW1GO1FBQ25GLGtHQUFrRztLQUNuRyxDQUFDO0lBRUYsTUFBTSxDQUFDLEtBQUssR0FBRztRQUNiLEdBQUcsb0JBQW9CLENBQUMsU0FBUztRQUNqQyxJQUFJLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQztZQUNqQixJQUFJLEVBQUUsR0FBRztZQUNULFdBQVcsRUFBRSwyQ0FBMkM7WUFDeEQsUUFBUSxFQUFFLElBQUk7U0FDZixDQUFDO1FBQ0YsY0FBYyxFQUFFLEtBQUssQ0FBQyxNQUFNLENBQUM7WUFDM0IsV0FBVyxFQUFFLDZDQUE2QztTQUMzRCxDQUFDO1FBQ0YsaUJBQWlCLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQztZQUM5QixXQUFXLEVBQUUsZ0RBQWdEO1NBQzlELENBQUM7S0FDSCxDQUFDO0lBRUYsS0FBSyxDQUFDLEdBQUc7UUFDUCxNQUFNLEVBQUUsS0FBSyxFQUFFLEdBQUcsTUFBTSxJQUFJLENBQUMsS0FBSyxDQUFDLG9DQUFvQyxDQUFDLENBQUM7UUFFekUsTUFBTSxRQUFRLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQztRQUM1QixJQUFJLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO1lBQzdCLElBQUksQ0FBQyxLQUFLLENBQUMsbUJBQW1CLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFDNUMsQ0FBQztRQUVELE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDekMsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUVqRCxJQUFJLFFBQVEsR0FBRywwQkFBMEIsQ0FBQztRQUMxQyxJQUFJLEdBQUcsS0FBSyxNQUFNLElBQUksR0FBRyxLQUFLLE9BQU87WUFBRSxRQUFRLEdBQUcsWUFBWSxDQUFDO2FBQzFELElBQUksR0FBRyxLQUFLLE1BQU07WUFBRSxRQUFRLEdBQUcsV0FBVyxDQUFDO2FBQzNDLElBQUksR0FBRyxLQUFLLE1BQU07WUFBRSxRQUFRLEdBQUcsV0FBVyxDQUFDO2FBQzNDLElBQUksR0FBRyxLQUFLLE1BQU07WUFBRSxRQUFRLEdBQUcsaUJBQWlCLENBQUM7YUFDakQsSUFBSSxHQUFHLEtBQUssT0FBTztZQUFFLFFBQVEsR0FBRyxZQUFZLENBQUM7UUFFbEQsTUFBTSxVQUFVLEdBQUcsRUFBRSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUU3QyxNQUFNLFFBQVEsR0FBRyxtQkFBbUIsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDM0YsTUFBTSxLQUFLLEdBQWEsRUFBRSxDQUFDO1FBRTNCLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FDcEIsS0FBSyxRQUFRLE1BQU07WUFDbkIsMERBQTBELFFBQVEsT0FBTztZQUN6RSxpQkFBaUIsUUFBUSxVQUFVLENBQ3BDLENBQUMsQ0FBQztRQUNILEtBQUssQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7UUFFdkIsSUFBSSxLQUFLLENBQUMsY0FBYyxDQUFDLEVBQUUsQ0FBQztZQUMxQixLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQ3BCLFNBQVMsUUFBUSxNQUFNO2dCQUN2Qiw0REFBNEQ7Z0JBQzVELEtBQUssQ0FBQyxjQUFjLENBQUMsQ0FDdEIsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUVELElBQUksS0FBSyxDQUFDLGlCQUFpQixDQUFDLEVBQUUsQ0FBQztZQUM3QixLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQ3BCLFNBQVMsUUFBUSxNQUFNO2dCQUN2QiwrREFBK0Q7Z0JBQy9ELEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxDQUN6QixDQUFDLENBQUM7UUFDTCxDQUFDO1FBRUQsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsUUFBUSxRQUFRLENBQUMsQ0FBQyxDQUFDO1FBRW5ELE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFbEMsTUFBTSxLQUFLLEdBQUcsWUFBWSxFQUFFLENBQUM7UUFDN0IsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ1gsTUFBTSxJQUFJLG1CQUFtQixFQUFFLENBQUM7UUFDbEMsQ0FBQztRQUVELE1BQU0sT0FBTyxHQUFHLGNBQWMsQ0FBQyxTQUFTLENBQUMsSUFBSSxxQkFBcUIsQ0FBQztRQUNuRSxNQUFNLE9BQU8sR0FBRyxpQkFBaUIsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUM3QyxNQUFNLEdBQUcsR0FBRyxHQUFHLE9BQU8saURBQWlELENBQUM7UUFFeEUsTUFBTSxPQUFPLEdBQTJCO1lBQ3RDLGNBQWMsRUFBRSxpQ0FBaUMsUUFBUSxFQUFFO1lBQzNELE1BQU0sRUFBRSxrQkFBa0I7WUFDMUIsYUFBYSxFQUFFLFVBQVUsS0FBSyxFQUFFO1NBQ2pDLENBQUM7UUFFRixNQUFNLEtBQUssR0FBRyxpQkFBaUIsQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUNoRCxJQUFJLEtBQUssRUFBRSxDQUFDO1lBQ1YsT0FBTyxDQUFDLG1CQUFtQixDQUFDLEdBQUcsS0FBSyxDQUFDO1FBQ3ZDLENBQUM7UUFFRCxNQUFNLElBQUksR0FBRyxPQUFPLENBQUMsb0NBQW9DLENBQUMsQ0FBQztRQUMzRCxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7UUFFYixNQUFNLFVBQVUsR0FBRyxJQUFJLGVBQWUsRUFBRSxDQUFDO1FBQ3pDLE1BQU0sU0FBUyxHQUFHLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFFaEUsTUFBTSxJQUFJLEdBQUcsTUFBTSxLQUFLLENBQUMsR0FBRyxFQUFFO1lBQzVCLE1BQU0sRUFBRSxNQUFNO1lBQ2QsT0FBTztZQUNQLElBQUk7WUFDSixNQUFNLEVBQUUsVUFBVSxDQUFDLE1BQU07U0FDMUIsQ0FBQyxDQUFDO1FBRUgsWUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRXhCLE1BQU0sSUFBSSxHQUFHLENBQUMsTUFBTSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FHaEQsQ0FBQztRQUVGLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDYixJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1lBQzNCLE1BQU0sSUFBSSxRQUFRLENBQ2hCLElBQUksQ0FBQyxLQUFLLElBQUksY0FBYyxFQUM1QixJQUFJLENBQUMsT0FBTyxJQUFJLFFBQVEsSUFBSSxDQUFDLE1BQU0sRUFBRSxFQUNyQyxJQUFJLENBQUMsTUFBTSxDQUNaLENBQUM7UUFDSixDQUFDO1FBRUQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBRWxDLElBQUksVUFBVSxFQUFFLEVBQUUsQ0FBQztZQUNqQixJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDWCxPQUFPO1FBQ1QsQ0FBQztRQUVELE9BQU8sQ0FBQyxnQ0FBZ0MsRUFBRTtZQUN4QyxFQUFFLEVBQUUsSUFBSSxDQUFDLEVBQUU7WUFDWCxHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUc7U0FDZCxDQUFDLENBQUM7SUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRmxhZ3MgfSBmcm9tIFwiQG9jbGlmL2NvcmVcIjtcbmltcG9ydCB7IEF1dGhlbnRpY2F0ZWRDb21tYW5kIH0gZnJvbSBcIi4uLy4uL2xpYi9iYXNlLWNvbW1hbmQuanNcIjtcbmltcG9ydCB7IHN1Y2Nlc3MsIGpzb24sIGlzSnNvbk1vZGUsIHNwaW5uZXIgfSBmcm9tIFwiLi4vLi4vbGliL291dHB1dC5qc1wiO1xuaW1wb3J0IHtcbiAgZ2V0QXV0aFRva2VuLFxuICBnZXRDb25maWdWYWx1ZSxcbiAgZ2V0RWZmZWN0aXZlVmFsdWUsXG59IGZyb20gXCIuLi8uLi9saWIvY29uZmlnLmpzXCI7XG5pbXBvcnQge1xuICBBcGlFcnJvcixcbiAgQXV0aGVudGljYXRpb25FcnJvcixcbn0gZnJvbSBcIi4uLy4uL2xpYi9hcGktY2xpZW50LmpzXCI7XG5pbXBvcnQgKiBhcyBmcyBmcm9tIFwibm9kZTpmc1wiO1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tIFwibm9kZTpwYXRoXCI7XG5cbmludGVyZmFjZSBVcGxvYWRSZXNwb25zZSB7XG4gIHVybDogc3RyaW5nO1xuICBpZDogc3RyaW5nO1xufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBFbnRlcnByaXNlVXBsb2FkVmVyaWZpY2F0aW9uRG9jdW1lbnQgZXh0ZW5kcyBBdXRoZW50aWNhdGVkQ29tbWFuZCB7XG4gIHN0YXRpYyBkZXNjcmlwdGlvbiA9IFwiVXBsb2FkIGEgdmVyaWZpY2F0aW9uIGRvY3VtZW50IChpbWFnZSBvciBQREYpXCI7XG5cbiAgc3RhdGljIGV4YW1wbGVzID0gW1xuICAgICc8JT0gY29uZmlnLmJpbiAlPiBlbnRlcnByaXNlIHVwbG9hZC12ZXJpZmljYXRpb24tZG9jdW1lbnQgLS1maWxlIC4vZWluLWxldHRlci5wbmcnLFxuICAgICc8JT0gY29uZmlnLmJpbiAlPiBlbnRlcnByaXNlIHVwbG9hZC12ZXJpZmljYXRpb24tZG9jdW1lbnQgLS1maWxlIC4vZG9jLnBkZiAtLXdvcmtzcGFjZS1pZCB3c18xMjMnLFxuICBdO1xuXG4gIHN0YXRpYyBmbGFncyA9IHtcbiAgICAuLi5BdXRoZW50aWNhdGVkQ29tbWFuZC5iYXNlRmxhZ3MsXG4gICAgZmlsZTogRmxhZ3Muc3RyaW5nKHtcbiAgICAgIGNoYXI6IFwiZlwiLFxuICAgICAgZGVzY3JpcHRpb246IFwiUGF0aCB0byB0aGUgZmlsZSB0byB1cGxvYWQgKGltYWdlIG9yIFBERilcIixcbiAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgIH0pLFxuICAgIFwid29ya3NwYWNlLWlkXCI6IEZsYWdzLnN0cmluZyh7XG4gICAgICBkZXNjcmlwdGlvbjogXCJXb3Jrc3BhY2UgSUQgdG8gYXNzb2NpYXRlIHRoZSBkb2N1bWVudCB3aXRoXCIsXG4gICAgfSksXG4gICAgXCJ2ZXJpZmljYXRpb24taWRcIjogRmxhZ3Muc3RyaW5nKHtcbiAgICAgIGRlc2NyaXB0aW9uOiBcIlZlcmlmaWNhdGlvbiBJRCB0byBhc3NvY2lhdGUgdGhlIGRvY3VtZW50IHdpdGhcIixcbiAgICB9KSxcbiAgfTtcblxuICBhc3luYyBydW4oKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgeyBmbGFncyB9ID0gYXdhaXQgdGhpcy5wYXJzZShFbnRlcnByaXNlVXBsb2FkVmVyaWZpY2F0aW9uRG9jdW1lbnQpO1xuXG4gICAgY29uc3QgZmlsZVBhdGggPSBmbGFncy5maWxlO1xuICAgIGlmICghZnMuZXhpc3RzU3luYyhmaWxlUGF0aCkpIHtcbiAgICAgIHRoaXMuZXJyb3IoYEZpbGUgbm90IGZvdW5kOiAke2ZpbGVQYXRofWApO1xuICAgIH1cblxuICAgIGNvbnN0IGZpbGVuYW1lID0gcGF0aC5iYXNlbmFtZShmaWxlUGF0aCk7XG4gICAgY29uc3QgZXh0ID0gcGF0aC5leHRuYW1lKGZpbGVQYXRoKS50b0xvd2VyQ2FzZSgpO1xuXG4gICAgbGV0IG1pbWV0eXBlID0gXCJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW1cIjtcbiAgICBpZiAoZXh0ID09PSBcIi5qcGdcIiB8fCBleHQgPT09IFwiLmpwZWdcIikgbWltZXR5cGUgPSBcImltYWdlL2pwZWdcIjtcbiAgICBlbHNlIGlmIChleHQgPT09IFwiLnBuZ1wiKSBtaW1ldHlwZSA9IFwiaW1hZ2UvcG5nXCI7XG4gICAgZWxzZSBpZiAoZXh0ID09PSBcIi5naWZcIikgbWltZXR5cGUgPSBcImltYWdlL2dpZlwiO1xuICAgIGVsc2UgaWYgKGV4dCA9PT0gXCIucGRmXCIpIG1pbWV0eXBlID0gXCJhcHBsaWNhdGlvbi9wZGZcIjtcbiAgICBlbHNlIGlmIChleHQgPT09IFwiLndlYnBcIikgbWltZXR5cGUgPSBcImltYWdlL3dlYnBcIjtcblxuICAgIGNvbnN0IGZpbGVCdWZmZXIgPSBmcy5yZWFkRmlsZVN5bmMoZmlsZVBhdGgpO1xuXG4gICAgY29uc3QgYm91bmRhcnkgPSBgLS0tLUZvcm1Cb3VuZGFyeSR7RGF0ZS5ub3coKX0ke01hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnN1YnN0cmluZygyKX1gO1xuICAgIGNvbnN0IHBhcnRzOiBCdWZmZXJbXSA9IFtdO1xuXG4gICAgcGFydHMucHVzaChCdWZmZXIuZnJvbShcbiAgICAgIGAtLSR7Ym91bmRhcnl9XFxyXFxuYCArXG4gICAgICBgQ29udGVudC1EaXNwb3NpdGlvbjogZm9ybS1kYXRhOyBuYW1lPVwiZmlsZVwiOyBmaWxlbmFtZT1cIiR7ZmlsZW5hbWV9XCJcXHJcXG5gICtcbiAgICAgIGBDb250ZW50LVR5cGU6ICR7bWltZXR5cGV9XFxyXFxuXFxyXFxuYCxcbiAgICApKTtcbiAgICBwYXJ0cy5wdXNoKGZpbGVCdWZmZXIpO1xuXG4gICAgaWYgKGZsYWdzW1wid29ya3NwYWNlLWlkXCJdKSB7XG4gICAgICBwYXJ0cy5wdXNoKEJ1ZmZlci5mcm9tKFxuICAgICAgICBgXFxyXFxuLS0ke2JvdW5kYXJ5fVxcclxcbmAgK1xuICAgICAgICBgQ29udGVudC1EaXNwb3NpdGlvbjogZm9ybS1kYXRhOyBuYW1lPVwid29ya3NwYWNlSWRcIlxcclxcblxcclxcbmAgK1xuICAgICAgICBmbGFnc1tcIndvcmtzcGFjZS1pZFwiXSxcbiAgICAgICkpO1xuICAgIH1cblxuICAgIGlmIChmbGFnc1tcInZlcmlmaWNhdGlvbi1pZFwiXSkge1xuICAgICAgcGFydHMucHVzaChCdWZmZXIuZnJvbShcbiAgICAgICAgYFxcclxcbi0tJHtib3VuZGFyeX1cXHJcXG5gICtcbiAgICAgICAgYENvbnRlbnQtRGlzcG9zaXRpb246IGZvcm0tZGF0YTsgbmFtZT1cInZlcmlmaWNhdGlvbklkXCJcXHJcXG5cXHJcXG5gICtcbiAgICAgICAgZmxhZ3NbXCJ2ZXJpZmljYXRpb24taWRcIl0sXG4gICAgICApKTtcbiAgICB9XG5cbiAgICBwYXJ0cy5wdXNoKEJ1ZmZlci5mcm9tKGBcXHJcXG4tLSR7Ym91bmRhcnl9LS1cXHJcXG5gKSk7XG5cbiAgICBjb25zdCBib2R5ID0gQnVmZmVyLmNvbmNhdChwYXJ0cyk7XG5cbiAgICBjb25zdCB0b2tlbiA9IGdldEF1dGhUb2tlbigpO1xuICAgIGlmICghdG9rZW4pIHtcbiAgICAgIHRocm93IG5ldyBBdXRoZW50aWNhdGlvbkVycm9yKCk7XG4gICAgfVxuXG4gICAgY29uc3QgYmFzZVVybCA9IGdldENvbmZpZ1ZhbHVlKFwiYmFzZVVybFwiKSB8fCBcImh0dHBzOi8vc2VuZGx5LmxpdmVcIjtcbiAgICBjb25zdCB0aW1lb3V0ID0gZ2V0RWZmZWN0aXZlVmFsdWUoXCJ0aW1lb3V0XCIpO1xuICAgIGNvbnN0IHVybCA9IGAke2Jhc2VVcmx9L2FwaS92MS9lbnRlcnByaXNlL3ZlcmlmaWNhdGlvbi1kb2N1bWVudC91cGxvYWRgO1xuXG4gICAgY29uc3QgaGVhZGVyczogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgICAgIFwiQ29udGVudC1UeXBlXCI6IGBtdWx0aXBhcnQvZm9ybS1kYXRhOyBib3VuZGFyeT0ke2JvdW5kYXJ5fWAsXG4gICAgICBBY2NlcHQ6IFwiYXBwbGljYXRpb24vanNvblwiLFxuICAgICAgQXV0aG9yaXphdGlvbjogYEJlYXJlciAke3Rva2VufWAsXG4gICAgfTtcblxuICAgIGNvbnN0IG9yZ0lkID0gZ2V0RWZmZWN0aXZlVmFsdWUoXCJjdXJyZW50T3JnSWRcIik7XG4gICAgaWYgKG9yZ0lkKSB7XG4gICAgICBoZWFkZXJzW1wiWC1Pcmdhbml6YXRpb24tSWRcIl0gPSBvcmdJZDtcbiAgICB9XG5cbiAgICBjb25zdCBzcGluID0gc3Bpbm5lcihcIlVwbG9hZGluZyB2ZXJpZmljYXRpb24gZG9jdW1lbnQuLi5cIik7XG4gICAgc3Bpbi5zdGFydCgpO1xuXG4gICAgY29uc3QgY29udHJvbGxlciA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKTtcbiAgICBjb25zdCB0aW1lb3V0SWQgPSBzZXRUaW1lb3V0KCgpID0+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
+ }