@bussolabs/closeyourit-cli 0.0.15 → 0.0.17

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 (164) hide show
  1. package/README.md +73 -2
  2. package/dist/commands/alerts/notifications/delete.d.ts +12 -0
  3. package/dist/commands/alerts/notifications/delete.js +25 -0
  4. package/dist/commands/alerts/notifications/list.d.ts +9 -0
  5. package/dist/commands/alerts/notifications/list.js +29 -0
  6. package/dist/commands/alerts/notifications/read-all.d.ts +6 -0
  7. package/dist/commands/alerts/notifications/read-all.js +15 -0
  8. package/dist/commands/alerts/notifications/read.d.ts +9 -0
  9. package/dist/commands/alerts/notifications/read.js +22 -0
  10. package/dist/commands/alerts/preferences/show.d.ts +6 -0
  11. package/dist/commands/alerts/preferences/show.js +16 -0
  12. package/dist/commands/alerts/preferences/update.d.ts +20 -0
  13. package/dist/commands/alerts/preferences/update.js +63 -0
  14. package/dist/commands/analytics/goals/create.d.ts +13 -0
  15. package/dist/commands/analytics/goals/create.js +35 -0
  16. package/dist/commands/analytics/goals/delete.d.ts +13 -0
  17. package/dist/commands/analytics/goals/delete.js +27 -0
  18. package/dist/commands/analytics/goals/list.d.ts +9 -0
  19. package/dist/commands/analytics/goals/list.js +25 -0
  20. package/dist/commands/analytics/share.d.ts +10 -0
  21. package/dist/commands/analytics/share.js +30 -0
  22. package/dist/commands/analytics/show.d.ts +11 -0
  23. package/dist/commands/analytics/show.js +32 -0
  24. package/dist/commands/analytics/unshare.d.ts +10 -0
  25. package/dist/commands/analytics/unshare.js +24 -0
  26. package/dist/commands/cron-monitors/list.d.ts +11 -0
  27. package/dist/commands/cron-monitors/list.js +38 -0
  28. package/dist/commands/cron-monitors/show.d.ts +9 -0
  29. package/dist/commands/cron-monitors/show.js +20 -0
  30. package/dist/commands/groups/create.d.ts +1 -0
  31. package/dist/commands/groups/create.js +7 -0
  32. package/dist/commands/groups/update.d.ts +1 -0
  33. package/dist/commands/groups/update.js +8 -1
  34. package/dist/commands/ideas/archive.d.ts +12 -0
  35. package/dist/commands/ideas/archive.js +24 -0
  36. package/dist/commands/ideas/case-delete.d.ts +14 -0
  37. package/dist/commands/ideas/case-delete.js +30 -0
  38. package/dist/commands/ideas/case-update.d.ts +15 -0
  39. package/dist/commands/ideas/case-update.js +41 -0
  40. package/dist/commands/ideas/case.d.ts +14 -0
  41. package/dist/commands/ideas/case.js +33 -0
  42. package/dist/commands/ideas/delete.d.ts +13 -0
  43. package/dist/commands/ideas/delete.js +27 -0
  44. package/dist/commands/ideas/unarchive.d.ts +12 -0
  45. package/dist/commands/ideas/unarchive.js +24 -0
  46. package/dist/commands/ideas/update.d.ts +16 -0
  47. package/dist/commands/ideas/update.js +45 -0
  48. package/dist/commands/logs/link.d.ts +12 -0
  49. package/dist/commands/logs/link.js +33 -0
  50. package/dist/commands/logs/show.d.ts +9 -0
  51. package/dist/commands/logs/show.js +21 -0
  52. package/dist/commands/logs/unlink.d.ts +13 -0
  53. package/dist/commands/logs/unlink.js +26 -0
  54. package/dist/commands/members/remove.d.ts +12 -0
  55. package/dist/commands/members/remove.js +27 -0
  56. package/dist/commands/members/set-access.d.ts +4 -0
  57. package/dist/commands/members/set-access.js +38 -4
  58. package/dist/commands/members/update.d.ts +14 -0
  59. package/dist/commands/members/update.js +40 -0
  60. package/dist/commands/monitors/announcements/clear.d.ts +13 -0
  61. package/dist/commands/monitors/announcements/clear.js +27 -0
  62. package/dist/commands/monitors/announcements/set.d.ts +17 -0
  63. package/dist/commands/monitors/announcements/set.js +45 -0
  64. package/dist/commands/monitors/announcements/show.d.ts +12 -0
  65. package/dist/commands/monitors/announcements/show.js +24 -0
  66. package/dist/commands/monitors/create.d.ts +1 -0
  67. package/dist/commands/monitors/create.js +3 -0
  68. package/dist/commands/monitors/incidents/delete.d.ts +14 -0
  69. package/dist/commands/monitors/incidents/delete.js +28 -0
  70. package/dist/commands/monitors/incidents/group.d.ts +15 -0
  71. package/dist/commands/monitors/incidents/group.js +38 -0
  72. package/dist/commands/monitors/incidents/ungroup.d.ts +14 -0
  73. package/dist/commands/monitors/incidents/ungroup.js +31 -0
  74. package/dist/commands/monitors/incidents/update-add.d.ts +15 -0
  75. package/dist/commands/monitors/incidents/update-add.js +38 -0
  76. package/dist/commands/monitors/incidents/update-delete.d.ts +15 -0
  77. package/dist/commands/monitors/incidents/update-delete.js +31 -0
  78. package/dist/commands/monitors/publish.d.ts +12 -0
  79. package/dist/commands/monitors/publish.js +21 -0
  80. package/dist/commands/monitors/unpublish.d.ts +12 -0
  81. package/dist/commands/monitors/unpublish.js +21 -0
  82. package/dist/commands/monitors/update.d.ts +1 -0
  83. package/dist/commands/monitors/update.js +3 -0
  84. package/dist/commands/org/update.d.ts +2 -0
  85. package/dist/commands/org/update.js +10 -0
  86. package/dist/commands/platforms/create.d.ts +1 -0
  87. package/dist/commands/platforms/create.js +7 -0
  88. package/dist/commands/platforms/update.d.ts +1 -0
  89. package/dist/commands/platforms/update.js +8 -1
  90. package/dist/commands/projects/create.d.ts +2 -0
  91. package/dist/commands/projects/create.js +13 -0
  92. package/dist/commands/projects/link-server.d.ts +11 -0
  93. package/dist/commands/projects/link-server.js +33 -0
  94. package/dist/commands/projects/settings/show.d.ts +9 -0
  95. package/dist/commands/projects/settings/show.js +23 -0
  96. package/dist/commands/projects/settings/update.d.ts +14 -0
  97. package/dist/commands/projects/settings/update.js +50 -0
  98. package/dist/commands/projects/unlink-server.d.ts +13 -0
  99. package/dist/commands/projects/unlink-server.js +29 -0
  100. package/dist/commands/projects/update.d.ts +2 -0
  101. package/dist/commands/projects/update.js +14 -1
  102. package/dist/commands/releases/list.d.ts +10 -0
  103. package/dist/commands/releases/list.js +29 -0
  104. package/dist/commands/tickets/links.d.ts +12 -0
  105. package/dist/commands/tickets/links.js +33 -0
  106. package/dist/commands/tickets/reviewer.d.ts +13 -0
  107. package/dist/commands/tickets/reviewer.js +29 -0
  108. package/dist/commands/tickets/unlink.d.ts +14 -0
  109. package/dist/commands/tickets/unlink.js +29 -0
  110. package/dist/commands/tickets/unreviewer.d.ts +12 -0
  111. package/dist/commands/tickets/unreviewer.js +25 -0
  112. package/dist/commands/tickets/unwatch.d.ts +12 -0
  113. package/dist/commands/tickets/unwatch.js +25 -0
  114. package/dist/commands/tickets/watch.d.ts +12 -0
  115. package/dist/commands/tickets/watch.js +26 -0
  116. package/dist/commands/todos/complete.d.ts +10 -0
  117. package/dist/commands/todos/complete.js +23 -0
  118. package/dist/commands/todos/create.d.ts +10 -0
  119. package/dist/commands/todos/create.js +29 -0
  120. package/dist/commands/todos/delete.d.ts +12 -0
  121. package/dist/commands/todos/delete.js +25 -0
  122. package/dist/commands/todos/items/add.d.ts +14 -0
  123. package/dist/commands/todos/items/add.js +35 -0
  124. package/dist/commands/todos/items/delete.d.ts +13 -0
  125. package/dist/commands/todos/items/delete.js +26 -0
  126. package/dist/commands/todos/items/list.d.ts +12 -0
  127. package/dist/commands/todos/items/list.js +28 -0
  128. package/dist/commands/todos/items/update.d.ts +15 -0
  129. package/dist/commands/todos/items/update.js +38 -0
  130. package/dist/commands/todos/list.d.ts +9 -0
  131. package/dist/commands/todos/list.js +24 -0
  132. package/dist/commands/todos/reorder.d.ts +9 -0
  133. package/dist/commands/todos/reorder.js +19 -0
  134. package/dist/commands/todos/share.d.ts +12 -0
  135. package/dist/commands/todos/share.js +33 -0
  136. package/dist/commands/todos/shared-show.d.ts +9 -0
  137. package/dist/commands/todos/shared-show.js +20 -0
  138. package/dist/commands/todos/shared.d.ts +9 -0
  139. package/dist/commands/todos/shared.js +25 -0
  140. package/dist/commands/todos/shares.d.ts +9 -0
  141. package/dist/commands/todos/shares.js +26 -0
  142. package/dist/commands/todos/show.d.ts +9 -0
  143. package/dist/commands/todos/show.js +20 -0
  144. package/dist/commands/todos/uncomplete.d.ts +10 -0
  145. package/dist/commands/todos/uncomplete.js +23 -0
  146. package/dist/commands/todos/update.d.ts +13 -0
  147. package/dist/commands/todos/update.js +34 -0
  148. package/dist/commands/uptime-groups/create.d.ts +12 -0
  149. package/dist/commands/uptime-groups/create.js +35 -0
  150. package/dist/commands/uptime-groups/delete.d.ts +12 -0
  151. package/dist/commands/uptime-groups/delete.js +25 -0
  152. package/dist/commands/uptime-groups/list.d.ts +9 -0
  153. package/dist/commands/uptime-groups/list.js +24 -0
  154. package/dist/commands/uptime-groups/publish.d.ts +9 -0
  155. package/dist/commands/uptime-groups/publish.js +22 -0
  156. package/dist/commands/uptime-groups/show.d.ts +9 -0
  157. package/dist/commands/uptime-groups/show.js +20 -0
  158. package/dist/commands/uptime-groups/unpublish.d.ts +9 -0
  159. package/dist/commands/uptime-groups/unpublish.js +22 -0
  160. package/dist/commands/uptime-groups/update.d.ts +15 -0
  161. package/dist/commands/uptime-groups/update.js +37 -0
  162. package/oclif.manifest.json +5936 -2190
  163. package/opencli.json +3235 -189
  164. package/package.json +16 -1
@@ -0,0 +1,12 @@
1
+ import { BaseCommand } from '../../base';
2
+ export default class MonitorsUnpublish extends BaseCommand {
3
+ static description: string;
4
+ static examples: string[];
5
+ static args: {
6
+ id: import("@oclif/core/lib/interfaces").Arg<string, Record<string, unknown>>;
7
+ };
8
+ static flags: {
9
+ project: import("@oclif/core/lib/interfaces").OptionFlag<string, import("@oclif/core/lib/interfaces").CustomOptions>;
10
+ };
11
+ run(): Promise<unknown>;
12
+ }
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const core_1 = require("@oclif/core");
4
+ const base_1 = require("../../base");
5
+ class MonitorsUnpublish extends base_1.BaseCommand {
6
+ static description = 'Unpublish the public status page for a monitor';
7
+ static examples = ['<%= config.bin %> monitors unpublish <monitor-id> --project acme-api'];
8
+ static args = {
9
+ id: core_1.Args.string({ description: 'Monitor id', required: true }),
10
+ };
11
+ static flags = { ...base_1.projectFlag };
12
+ async run() {
13
+ const { args, flags } = await this.parse(MonitorsUnpublish);
14
+ const projectId = await this.resolveProjectId(flags.project);
15
+ const res = await this.api.delete(`/cli/v1/projects/${encodeURIComponent(projectId)}/monitors/${encodeURIComponent(args.id)}/publication`);
16
+ if (!this.jsonEnabled())
17
+ this.log(`Unpublished status page for monitor ${args.id}`);
18
+ return res;
19
+ }
20
+ }
21
+ exports.default = MonitorsUnpublish;
@@ -13,6 +13,7 @@ export default class MonitorsUpdate extends BaseCommand {
13
13
  'timeout-seconds': import("@oclif/core/lib/interfaces").OptionFlag<number | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
14
14
  'expected-body-keyword': import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
15
15
  'ssl-expiry-warn-days': import("@oclif/core/lib/interfaces").OptionFlag<number | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
16
+ 'group-id': import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
16
17
  project: import("@oclif/core/lib/interfaces").OptionFlag<string, import("@oclif/core/lib/interfaces").CustomOptions>;
17
18
  };
18
19
  run(): Promise<unknown>;
@@ -21,6 +21,7 @@ class MonitorsUpdate extends base_1.BaseCommand {
21
21
  'timeout-seconds': core_1.Flags.integer({ description: 'Request timeout in seconds' }),
22
22
  'expected-body-keyword': core_1.Flags.string({ description: 'Keyword expected in the response body (check fails without it; not with HEAD)' }),
23
23
  'ssl-expiry-warn-days': core_1.Flags.integer({ description: 'Alert when the TLS certificate has at most N days left (empty = off)' }),
24
+ 'group-id': core_1.Flags.string({ description: 'Uptime group id to attach the monitor to (org-level)' }),
24
25
  };
25
26
  async run() {
26
27
  const { args, flags } = await this.parse(MonitorsUpdate);
@@ -40,6 +41,8 @@ class MonitorsUpdate extends base_1.BaseCommand {
40
41
  body.expected_body_keyword = flags['expected-body-keyword'];
41
42
  if (flags['ssl-expiry-warn-days'] !== undefined)
42
43
  body.ssl_expiry_warn_days = flags['ssl-expiry-warn-days'];
44
+ if (flags['group-id'] !== undefined)
45
+ body.group_id = flags['group-id'];
43
46
  const res = await this.api.put(`/cli/v1/projects/${encodeURIComponent(projectId)}/monitors/${encodeURIComponent(args.id)}`, body);
44
47
  if (!this.jsonEnabled()) {
45
48
  this.log('Monitor updated:');
@@ -6,6 +6,8 @@ export default class OrgUpdate extends BaseCommand {
6
6
  name: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
7
7
  slug: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
8
8
  'projects-view': import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
9
+ 'logs-retention-days': import("@oclif/core/lib/interfaces").OptionFlag<number | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
10
+ 'analytics-retention-days': import("@oclif/core/lib/interfaces").OptionFlag<number | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
9
11
  };
10
12
  run(): Promise<unknown>;
11
13
  }
@@ -9,11 +9,16 @@ class OrgUpdate extends base_1.BaseCommand {
9
9
  '<%= config.bin %> org update --name "Acme Inc"',
10
10
  '<%= config.bin %> org update --slug acme-inc',
11
11
  '<%= config.bin %> org update --projects-view table',
12
+ '<%= config.bin %> org update --logs-retention-days 30 --analytics-retention-days 365',
12
13
  ];
13
14
  static flags = {
14
15
  name: core_1.Flags.string({ description: 'New organization name' }),
15
16
  slug: core_1.Flags.string({ description: 'New organization slug (lowercase, a-z 0-9 and hyphens)' }),
16
17
  'projects-view': core_1.Flags.string({ description: 'Default projects list view', options: ['cards', 'table'] }),
18
+ 'logs-retention-days': core_1.Flags.integer({ description: 'Org-level log retention in days (blank inherits the god default)' }),
19
+ 'analytics-retention-days': core_1.Flags.integer({
20
+ description: 'Org-level analytics retention in days (blank inherits the god default)',
21
+ }),
17
22
  };
18
23
  async run() {
19
24
  const { flags } = await this.parse(OrgUpdate);
@@ -24,6 +29,11 @@ class OrgUpdate extends base_1.BaseCommand {
24
29
  body.slug = flags.slug;
25
30
  if (flags['projects-view'] !== undefined)
26
31
  body.default_projects_view = flags['projects-view'];
32
+ if (flags['logs-retention-days'] !== undefined)
33
+ body.logs_retention_days = flags['logs-retention-days'];
34
+ if (flags['analytics-retention-days'] !== undefined) {
35
+ body.analytics_retention_days = flags['analytics-retention-days'];
36
+ }
27
37
  const res = await this.api.put('/cli/v1/organization', body);
28
38
  if (!this.jsonEnabled()) {
29
39
  this.log('Organization updated:');
@@ -10,6 +10,7 @@ export default class PlatformsCreate extends BaseCommand {
10
10
  color: import("@oclif/core/lib/interfaces").OptionFlag<string, import("@oclif/core/lib/interfaces").CustomOptions>;
11
11
  position: import("@oclif/core/lib/interfaces").OptionFlag<number | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
12
12
  active: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
13
+ 'supports-uptime': import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
13
14
  };
14
15
  run(): Promise<unknown>;
15
16
  }
@@ -11,12 +11,17 @@ class PlatformsCreate extends base_1.BaseCommand {
11
11
  static examples = [
12
12
  '<%= config.bin %> platforms create ios --label iOS',
13
13
  '<%= config.bin %> platforms create android --label Android --color emerald --position 2',
14
+ '<%= config.bin %> platforms create web --label Web --supports-uptime',
14
15
  ];
15
16
  static flags = {
16
17
  label: core_1.Flags.string({ description: 'Human-readable label', required: true }),
17
18
  color: core_1.Flags.string({ description: 'Color label', default: 'sky' }),
18
19
  position: core_1.Flags.integer({ description: 'Sort position' }),
19
20
  active: core_1.Flags.boolean({ allowNo: true, description: 'Whether the platform is active' }),
21
+ 'supports-uptime': core_1.Flags.boolean({
22
+ allowNo: true,
23
+ description: 'Whether projects declaring this platform can enable uptime monitoring',
24
+ }),
20
25
  };
21
26
  async run() {
22
27
  const { args, flags } = await this.parse(PlatformsCreate);
@@ -25,6 +30,8 @@ class PlatformsCreate extends base_1.BaseCommand {
25
30
  body.position = flags.position;
26
31
  if (flags.active !== undefined)
27
32
  body.active = flags.active;
33
+ if (flags['supports-uptime'] !== undefined)
34
+ body.supports_uptime = flags['supports-uptime'];
28
35
  const res = await this.api.post('/cli/v1/platforms', body);
29
36
  if (!this.jsonEnabled()) {
30
37
  this.log('Platform created:');
@@ -11,6 +11,7 @@ export default class PlatformsUpdate extends BaseCommand {
11
11
  color: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
12
12
  position: import("@oclif/core/lib/interfaces").OptionFlag<number | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
13
13
  active: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
14
+ 'supports-uptime': import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
14
15
  };
15
16
  run(): Promise<unknown>;
16
17
  }
@@ -7,11 +7,12 @@ class PlatformsUpdate extends base_1.BaseCommand {
7
7
  static args = {
8
8
  platform: core_1.Args.string({ description: 'Platform id (UUID) or code', required: true }),
9
9
  };
10
- static description = 'Update a platform (relabel, recolor, reorder, activate/deactivate)';
10
+ static description = 'Update a platform (relabel, recolor, reorder, activate/deactivate, toggle uptime support)';
11
11
  static examples = [
12
12
  '<%= config.bin %> platforms update ios --label "iOS / iPadOS"',
13
13
  '<%= config.bin %> platforms update web --color indigo --position 1',
14
14
  '<%= config.bin %> platforms update legacy --no-active',
15
+ '<%= config.bin %> platforms update web --supports-uptime',
15
16
  ];
16
17
  static flags = {
17
18
  code: core_1.Flags.string({ description: 'New code' }),
@@ -19,6 +20,10 @@ class PlatformsUpdate extends base_1.BaseCommand {
19
20
  color: core_1.Flags.string({ description: 'Color label' }),
20
21
  position: core_1.Flags.integer({ description: 'Sort position' }),
21
22
  active: core_1.Flags.boolean({ allowNo: true, description: 'Whether the platform is active' }),
23
+ 'supports-uptime': core_1.Flags.boolean({
24
+ allowNo: true,
25
+ description: 'Whether projects declaring this platform can enable uptime monitoring',
26
+ }),
22
27
  };
23
28
  async run() {
24
29
  const { args, flags } = await this.parse(PlatformsUpdate);
@@ -33,6 +38,8 @@ class PlatformsUpdate extends base_1.BaseCommand {
33
38
  body.position = flags.position;
34
39
  if (flags.active !== undefined)
35
40
  body.active = flags.active;
41
+ if (flags['supports-uptime'] !== undefined)
42
+ body.supports_uptime = flags['supports-uptime'];
36
43
  // The backend resolves the path identifier by id-or-code, so pass it through directly.
37
44
  const res = await this.api.put(`/cli/v1/platforms/${encodeURIComponent(args.platform)}`, body);
38
45
  if (!this.jsonEnabled()) {
@@ -10,6 +10,8 @@ export default class ProjectsCreate extends BaseCommand {
10
10
  description: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
11
11
  group: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
12
12
  key: import("@oclif/core/lib/interfaces").OptionFlag<string, import("@oclif/core/lib/interfaces").CustomOptions>;
13
+ 'roadmap-enabled': import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
14
+ 'quick-bug-report-enabled': import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
13
15
  };
14
16
  run(): Promise<unknown>;
15
17
  }
@@ -12,6 +12,7 @@ class ProjectsCreate extends base_1.BaseCommand {
12
12
  '<%= config.bin %> projects create driverone-rails --key DRRA',
13
13
  '<%= config.bin %> projects create driverone-rails --group DriverOne --key DRRA',
14
14
  '<%= config.bin %> projects create driverone-flutter -g <group-uuid> -k DRFL',
15
+ '<%= config.bin %> projects create acme-api -k ACME --roadmap-enabled --quick-bug-report-enabled',
15
16
  ];
16
17
  static flags = {
17
18
  color: core_1.Flags.string({ description: 'Color label' }),
@@ -22,6 +23,14 @@ class ProjectsCreate extends base_1.BaseCommand {
22
23
  required: true,
23
24
  description: 'Project key (uppercase A-Z0-9, max 4 chars, unique per org)',
24
25
  }),
26
+ 'roadmap-enabled': core_1.Flags.boolean({
27
+ allowNo: true,
28
+ description: 'Enable the roadmap (feature/improvement tickets + milestones) for this project',
29
+ }),
30
+ 'quick-bug-report-enabled': core_1.Flags.boolean({
31
+ allowNo: true,
32
+ description: 'Enable the AI-assisted quick bug report on this project',
33
+ }),
25
34
  };
26
35
  async run() {
27
36
  const { args, flags } = await this.parse(ProjectsCreate);
@@ -37,6 +46,10 @@ class ProjectsCreate extends base_1.BaseCommand {
37
46
  else
38
47
  body.group_name = flags.group;
39
48
  }
49
+ if (flags['roadmap-enabled'] !== undefined)
50
+ body.roadmap_enabled = flags['roadmap-enabled'];
51
+ if (flags['quick-bug-report-enabled'] !== undefined)
52
+ body.quick_bug_report_enabled = flags['quick-bug-report-enabled'];
40
53
  const res = await this.api.post('/cli/v1/projects', body);
41
54
  if (!this.jsonEnabled()) {
42
55
  this.log('Project created:');
@@ -0,0 +1,11 @@
1
+ import { BaseCommand } from '../../base';
2
+ export default class ProjectsLinkServer extends BaseCommand {
3
+ static description: string;
4
+ static examples: string[];
5
+ static flags: {
6
+ 'host-id': import("@oclif/core/lib/interfaces").OptionFlag<string, import("@oclif/core/lib/interfaces").CustomOptions>;
7
+ 'environment-id': import("@oclif/core/lib/interfaces").OptionFlag<string, import("@oclif/core/lib/interfaces").CustomOptions>;
8
+ project: import("@oclif/core/lib/interfaces").OptionFlag<string, import("@oclif/core/lib/interfaces").CustomOptions>;
9
+ };
10
+ run(): Promise<unknown>;
11
+ }
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const core_1 = require("@oclif/core");
4
+ const base_1 = require("../../base");
5
+ const output_1 = require("../../lib/output");
6
+ class ProjectsLinkServer extends base_1.BaseCommand {
7
+ static description = 'Link a server host to one of the project declared environments (uptime monitoring)';
8
+ static examples = [
9
+ '<%= config.bin %> projects link-server --project LBRA --host-id <host-uuid> --environment-id <env-uuid>',
10
+ ];
11
+ static flags = {
12
+ ...base_1.projectFlag,
13
+ 'host-id': core_1.Flags.string({ description: 'Server host id (UUID, org-scoped and active)', required: true }),
14
+ 'environment-id': core_1.Flags.string({
15
+ description: 'Environment id (UUID) among those declared by the project',
16
+ required: true,
17
+ }),
18
+ };
19
+ async run() {
20
+ const { flags } = await this.parse(ProjectsLinkServer);
21
+ const projectId = await this.resolveProjectId(flags.project);
22
+ const res = await this.api.post(`/cli/v1/projects/${projectId}/servers`, {
23
+ host_id: flags['host-id'],
24
+ environment_id: flags['environment-id'],
25
+ });
26
+ if (!this.jsonEnabled()) {
27
+ this.log('Server linked:');
28
+ this.log((0, output_1.renderRecord)(res.data ?? {}));
29
+ }
30
+ return res;
31
+ }
32
+ }
33
+ exports.default = ProjectsLinkServer;
@@ -0,0 +1,9 @@
1
+ import { BaseCommand } from '../../../base';
2
+ export default class ProjectsSettingsShow extends BaseCommand {
3
+ static description: string;
4
+ static examples: string[];
5
+ static flags: {
6
+ project: import("@oclif/core/lib/interfaces").OptionFlag<string, import("@oclif/core/lib/interfaces").CustomOptions>;
7
+ };
8
+ run(): Promise<unknown>;
9
+ }
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const base_1 = require("../../../base");
4
+ const output_1 = require("../../../lib/output");
5
+ class ProjectsSettingsShow extends base_1.BaseCommand {
6
+ static description = 'Show a project settings (log/analytics retention + feature flags)';
7
+ static examples = [
8
+ '<%= config.bin %> projects settings show --project legalbloom-rails',
9
+ '<%= config.bin %> projects settings show -p LBRA',
10
+ ];
11
+ static flags = { ...base_1.projectFlag };
12
+ async run() {
13
+ const { flags } = await this.parse(ProjectsSettingsShow);
14
+ const projectId = await this.resolveProjectId(flags.project);
15
+ const res = await this.api.get(`/cli/v1/projects/${projectId}/settings`);
16
+ if (!this.jsonEnabled()) {
17
+ this.log('Project settings:');
18
+ this.log((0, output_1.renderRecord)(res.data ?? {}));
19
+ }
20
+ return res;
21
+ }
22
+ }
23
+ exports.default = ProjectsSettingsShow;
@@ -0,0 +1,14 @@
1
+ import { BaseCommand } from '../../../base';
2
+ export default class ProjectsSettingsUpdate extends BaseCommand {
3
+ static description: string;
4
+ static examples: string[];
5
+ static flags: {
6
+ 'logs-retention-days': import("@oclif/core/lib/interfaces").OptionFlag<number | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
7
+ 'analytics-retention-days': import("@oclif/core/lib/interfaces").OptionFlag<number | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
8
+ 'roadmap-enabled': import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
9
+ 'quick-bug-report-enabled': import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
10
+ 'analytics-enabled': import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
11
+ project: import("@oclif/core/lib/interfaces").OptionFlag<string, import("@oclif/core/lib/interfaces").CustomOptions>;
12
+ };
13
+ run(): Promise<unknown>;
14
+ }
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const core_1 = require("@oclif/core");
4
+ const base_1 = require("../../../base");
5
+ const output_1 = require("../../../lib/output");
6
+ class ProjectsSettingsUpdate extends base_1.BaseCommand {
7
+ static description = 'Update a project settings (log/analytics retention + feature flags); only the passed fields change';
8
+ static examples = [
9
+ '<%= config.bin %> projects settings update --project LBRA --logs-retention-days 30',
10
+ '<%= config.bin %> projects settings update -p LBRA --analytics-retention-days 365 --analytics-enabled',
11
+ '<%= config.bin %> projects settings update -p LBRA --roadmap-enabled --no-quick-bug-report-enabled',
12
+ ];
13
+ static flags = {
14
+ ...base_1.projectFlag,
15
+ 'logs-retention-days': core_1.Flags.integer({ description: 'Log retention in days (blank inherits the org/global default)' }),
16
+ 'analytics-retention-days': core_1.Flags.integer({
17
+ description: 'Analytics retention in days (blank inherits the org/global default)',
18
+ }),
19
+ 'roadmap-enabled': core_1.Flags.boolean({ allowNo: true, description: 'Enable/disable the project roadmap' }),
20
+ 'quick-bug-report-enabled': core_1.Flags.boolean({
21
+ allowNo: true,
22
+ description: 'Enable/disable the AI-assisted quick bug report',
23
+ }),
24
+ 'analytics-enabled': core_1.Flags.boolean({ allowNo: true, description: 'Enable/disable web analytics ingestion' }),
25
+ };
26
+ async run() {
27
+ const { flags } = await this.parse(ProjectsSettingsUpdate);
28
+ const projectId = await this.resolveProjectId(flags.project);
29
+ const body = {};
30
+ if (flags['logs-retention-days'] !== undefined)
31
+ body.logs_retention_days = flags['logs-retention-days'];
32
+ if (flags['analytics-retention-days'] !== undefined)
33
+ body.analytics_retention_days = flags['analytics-retention-days'];
34
+ if (flags['roadmap-enabled'] !== undefined)
35
+ body.roadmap_enabled = flags['roadmap-enabled'];
36
+ if (flags['quick-bug-report-enabled'] !== undefined)
37
+ body.quick_bug_report_enabled = flags['quick-bug-report-enabled'];
38
+ if (flags['analytics-enabled'] !== undefined)
39
+ body.analytics_enabled = flags['analytics-enabled'];
40
+ // The settings action responds to both PATCH and PUT (Rails singleton `resource` update); the CLI
41
+ // transport speaks PUT — the backend applies only the keys present in the body either way.
42
+ const res = await this.api.put(`/cli/v1/projects/${projectId}/settings`, body);
43
+ if (!this.jsonEnabled()) {
44
+ this.log('Project settings updated:');
45
+ this.log((0, output_1.renderRecord)(res.data ?? {}));
46
+ }
47
+ return res;
48
+ }
49
+ }
50
+ exports.default = ProjectsSettingsUpdate;
@@ -0,0 +1,13 @@
1
+ import { BaseCommand } from '../../base';
2
+ export default class ProjectsUnlinkServer extends BaseCommand {
3
+ static args: {
4
+ id: import("@oclif/core/lib/interfaces").Arg<string, Record<string, unknown>>;
5
+ };
6
+ static description: string;
7
+ static examples: string[];
8
+ static flags: {
9
+ confirm: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
10
+ project: import("@oclif/core/lib/interfaces").OptionFlag<string, import("@oclif/core/lib/interfaces").CustomOptions>;
11
+ };
12
+ run(): Promise<unknown>;
13
+ }
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const core_1 = require("@oclif/core");
4
+ const base_1 = require("../../base");
5
+ class ProjectsUnlinkServer extends base_1.BaseCommand {
6
+ static args = {
7
+ id: core_1.Args.string({ description: 'Server link id (from projects link-server / project servers list)', required: true }),
8
+ };
9
+ static description = 'Unlink a server host from the project (removes the host↔environment link)';
10
+ static examples = [
11
+ '<%= config.bin %> projects unlink-server <link-id> --project LBRA --confirm',
12
+ ];
13
+ static flags = {
14
+ ...base_1.projectFlag,
15
+ confirm: core_1.Flags.boolean({ description: 'Required: confirm the irreversible unlink' }),
16
+ };
17
+ async run() {
18
+ const { args, flags } = await this.parse(ProjectsUnlinkServer);
19
+ if (!flags.confirm) {
20
+ this.error('Refusing to unlink without --confirm (the action is irreversible).', { exit: 2 });
21
+ }
22
+ const projectId = await this.resolveProjectId(flags.project);
23
+ await this.api.delete(`/cli/v1/projects/${projectId}/servers/${encodeURIComponent(args.id)}`);
24
+ if (!this.jsonEnabled())
25
+ this.log(`Unlinked server ${args.id}`);
26
+ return { unlinked: args.id };
27
+ }
28
+ }
29
+ exports.default = ProjectsUnlinkServer;
@@ -8,6 +8,8 @@ export default class ProjectsUpdate extends BaseCommand {
8
8
  color: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
9
9
  description: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
10
10
  group: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
11
+ 'roadmap-enabled': import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
12
+ 'quick-bug-report-enabled': import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
11
13
  project: import("@oclif/core/lib/interfaces").OptionFlag<string, import("@oclif/core/lib/interfaces").CustomOptions>;
12
14
  };
13
15
  run(): Promise<unknown>;
@@ -3,10 +3,11 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const core_1 = require("@oclif/core");
4
4
  const base_1 = require("../../base");
5
5
  class ProjectsUpdate extends base_1.BaseCommand {
6
- static description = 'Update a project (name, key, color, description, group)';
6
+ static description = 'Update a project (name, key, color, description, group, feature flags)';
7
7
  static examples = [
8
8
  '<%= config.bin %> projects update --project LBRA --name "New name"',
9
9
  '<%= config.bin %> projects update -p LBRA --group Backend',
10
+ '<%= config.bin %> projects update -p LBRA --roadmap-enabled --no-quick-bug-report-enabled',
10
11
  ];
11
12
  static flags = {
12
13
  ...base_1.projectFlag,
@@ -15,6 +16,14 @@ class ProjectsUpdate extends base_1.BaseCommand {
15
16
  color: core_1.Flags.string({ description: 'Color label' }),
16
17
  description: core_1.Flags.string({ description: 'Free-form description' }),
17
18
  group: core_1.Flags.string({ description: 'Group id (UUID) or name to move the project into' }),
19
+ 'roadmap-enabled': core_1.Flags.boolean({
20
+ allowNo: true,
21
+ description: 'Enable/disable the roadmap (feature/improvement tickets + milestones) for this project',
22
+ }),
23
+ 'quick-bug-report-enabled': core_1.Flags.boolean({
24
+ allowNo: true,
25
+ description: 'Enable/disable the AI-assisted quick bug report on this project',
26
+ }),
18
27
  };
19
28
  async run() {
20
29
  const { flags } = await this.parse(ProjectsUpdate);
@@ -26,6 +35,10 @@ class ProjectsUpdate extends base_1.BaseCommand {
26
35
  }
27
36
  if (flags.group !== undefined)
28
37
  body.group_id = await this.resolveGroupId(flags.group);
38
+ if (flags['roadmap-enabled'] !== undefined)
39
+ body.roadmap_enabled = flags['roadmap-enabled'];
40
+ if (flags['quick-bug-report-enabled'] !== undefined)
41
+ body.quick_bug_report_enabled = flags['quick-bug-report-enabled'];
29
42
  const res = await this.api.put(`/cli/v1/projects/${projectId}`, body);
30
43
  if (!this.jsonEnabled()) {
31
44
  const p = res.data ?? {};
@@ -0,0 +1,10 @@
1
+ import { BaseCommand } from '../../base';
2
+ export default class ReleasesList extends BaseCommand {
3
+ static description: string;
4
+ static examples: string[];
5
+ static flags: {
6
+ page: import("@oclif/core/lib/interfaces").OptionFlag<number, import("@oclif/core/lib/interfaces").CustomOptions>;
7
+ project: import("@oclif/core/lib/interfaces").OptionFlag<string, import("@oclif/core/lib/interfaces").CustomOptions>;
8
+ };
9
+ run(): Promise<unknown>;
10
+ }
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const base_1 = require("../../base");
4
+ const output_1 = require("../../lib/output");
5
+ class ReleasesList extends base_1.BaseCommand {
6
+ static description = 'List the releases of a project (tracked from CI)';
7
+ static examples = [
8
+ '<%= config.bin %> releases list --project acme-api',
9
+ '<%= config.bin %> releases list -p acme-api --page 2 --json',
10
+ ];
11
+ static flags = { ...base_1.projectFlag, ...base_1.pageFlag };
12
+ async run() {
13
+ const { flags } = await this.parse(ReleasesList);
14
+ const projectId = await this.resolveProjectId(flags.project);
15
+ const res = await this.api.get(`/cli/v1/projects/${projectId}/releases?page=${flags.page}`);
16
+ const releases = res.data ?? [];
17
+ if (!this.jsonEnabled()) {
18
+ this.log((0, output_1.renderTable)(['VERSION', 'ENVIRONMENT', 'SHA', 'EVENTS', 'ID'], releases.map((release) => [
19
+ String(release.version ?? ''),
20
+ String(release.environment ?? ''),
21
+ String(release.sha ?? ''),
22
+ String(release.events_count ?? '0'),
23
+ String(release.id ?? ''),
24
+ ])));
25
+ }
26
+ return res;
27
+ }
28
+ }
29
+ exports.default = ReleasesList;
@@ -0,0 +1,12 @@
1
+ import { BaseCommand } from '../../base';
2
+ export default class TicketsLinks extends BaseCommand {
3
+ static description: string;
4
+ static examples: string[];
5
+ static args: {
6
+ id: import("@oclif/core/lib/interfaces").Arg<string, Record<string, unknown>>;
7
+ };
8
+ static flags: {
9
+ project: import("@oclif/core/lib/interfaces").OptionFlag<string, import("@oclif/core/lib/interfaces").CustomOptions>;
10
+ };
11
+ run(): Promise<unknown>;
12
+ }
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const core_1 = require("@oclif/core");
4
+ const base_1 = require("../../base");
5
+ const output_1 = require("../../lib/output");
6
+ class TicketsLinks extends base_1.BaseCommand {
7
+ // List the ticket↔ticket links (duplicate/related) involving a ticket. Creation lives only in the web
8
+ // dedup flow → not exposed on the CLI; here it's read-only, and `tickets unlink` removes a link.
9
+ static description = 'List the ticket-to-ticket links involving a ticket (duplicate/related)';
10
+ static examples = [
11
+ '<%= config.bin %> tickets links <ticket-id> --project acme-api',
12
+ '<%= config.bin %> tickets links <ticket-id> -p acme-api --json',
13
+ ];
14
+ static args = {
15
+ id: core_1.Args.string({ description: 'Ticket id or code (e.g. DRFL-3)', required: true }),
16
+ };
17
+ static flags = { ...base_1.projectFlag };
18
+ async run() {
19
+ const { args, flags } = await this.parse(TicketsLinks);
20
+ const projectId = await this.resolveProjectId(flags.project);
21
+ const res = await this.api.get(`/cli/v1/projects/${projectId}/tickets/${args.id}/links`);
22
+ const links = res.data ?? [];
23
+ if (!this.jsonEnabled()) {
24
+ this.log((0, output_1.renderTable)(['ID', 'KIND', 'OTHER_TICKET'], links.map((link) => [
25
+ String(link.id ?? ''),
26
+ String(link.kind ?? ''),
27
+ String(link.other_ticket_code ?? ''),
28
+ ])));
29
+ }
30
+ return res;
31
+ }
32
+ }
33
+ exports.default = TicketsLinks;
@@ -0,0 +1,13 @@
1
+ import { BaseCommand } from '../../base';
2
+ export default class TicketsReviewer extends BaseCommand {
3
+ static description: string;
4
+ static examples: string[];
5
+ static args: {
6
+ id: import("@oclif/core/lib/interfaces").Arg<string, Record<string, unknown>>;
7
+ };
8
+ static flags: {
9
+ 'reviewer-id': import("@oclif/core/lib/interfaces").OptionFlag<string, import("@oclif/core/lib/interfaces").CustomOptions>;
10
+ project: import("@oclif/core/lib/interfaces").OptionFlag<string, import("@oclif/core/lib/interfaces").CustomOptions>;
11
+ };
12
+ run(): Promise<unknown>;
13
+ }
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const core_1 = require("@oclif/core");
4
+ const base_1 = require("../../base");
5
+ const output_1 = require("../../lib/output");
6
+ class TicketsReviewer extends base_1.BaseCommand {
7
+ // Set the reviewer of a ticket (the backend gates `tickets.assign`). The reviewer is pinged only when
8
+ // the ticket enters a review-gate status (backend). To remove the reviewer: tickets unreviewer.
9
+ static description = 'Set the reviewer of a ticket (requires tickets.assign)';
10
+ static examples = ['<%= config.bin %> tickets reviewer <ticket-id> --project acme-api --reviewer-id <account-id>'];
11
+ static args = {
12
+ id: core_1.Args.string({ description: 'Ticket id or code (e.g. DRFL-3)', required: true }),
13
+ };
14
+ static flags = {
15
+ ...base_1.projectFlag,
16
+ 'reviewer-id': core_1.Flags.string({ description: 'Account id to set as reviewer', required: true }),
17
+ };
18
+ async run() {
19
+ const { args, flags } = await this.parse(TicketsReviewer);
20
+ const projectId = await this.resolveProjectId(flags.project);
21
+ const res = await this.api.put(`/cli/v1/projects/${projectId}/tickets/${args.id}/reviewer`, { reviewer_id: flags['reviewer-id'] });
22
+ if (!this.jsonEnabled()) {
23
+ this.log(`Ticket ${args.id} reviewer set:`);
24
+ this.log((0, output_1.renderRecord)(res.data ?? {}));
25
+ }
26
+ return res;
27
+ }
28
+ }
29
+ exports.default = TicketsReviewer;
@@ -0,0 +1,14 @@
1
+ import { BaseCommand } from '../../base';
2
+ export default class TicketsUnlink extends BaseCommand {
3
+ static description: string;
4
+ static examples: string[];
5
+ static args: {
6
+ id: import("@oclif/core/lib/interfaces").Arg<string, Record<string, unknown>>;
7
+ linkId: import("@oclif/core/lib/interfaces").Arg<string, Record<string, unknown>>;
8
+ };
9
+ static flags: {
10
+ confirm: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
11
+ project: import("@oclif/core/lib/interfaces").OptionFlag<string, import("@oclif/core/lib/interfaces").CustomOptions>;
12
+ };
13
+ run(): Promise<unknown>;
14
+ }