@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,11 @@
1
+ import { BaseCommand } from '../../base';
2
+ export default class CronMonitorsList extends BaseCommand {
3
+ static description: string;
4
+ static examples: string[];
5
+ static flags: {
6
+ project: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
7
+ status: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
8
+ page: import("@oclif/core/lib/interfaces").OptionFlag<number, import("@oclif/core/lib/interfaces").CustomOptions>;
9
+ };
10
+ run(): Promise<unknown>;
11
+ }
@@ -0,0 +1,38 @@
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 CronMonitorsList extends base_1.BaseCommand {
7
+ static description = 'List cron / heartbeat monitors across your visible projects';
8
+ static examples = [
9
+ '<%= config.bin %> cron-monitors list',
10
+ '<%= config.bin %> cron-monitors list --status missed --project acme-api --json',
11
+ ];
12
+ static flags = {
13
+ ...base_1.pageFlag,
14
+ project: core_1.Flags.string({ char: 'p', description: 'Filter by project id (UUID) or key' }),
15
+ status: core_1.Flags.string({ description: 'Filter by status', options: ['unknown', 'ok', 'late', 'missed'] }),
16
+ };
17
+ async run() {
18
+ const { flags } = await this.parse(CronMonitorsList);
19
+ const params = new URLSearchParams({ page: String(flags.page) });
20
+ if (flags.status !== undefined)
21
+ params.set('status', flags.status);
22
+ if (flags.project !== undefined)
23
+ params.set('project_id', await this.resolveProjectId(flags.project));
24
+ const res = await this.api.get(`/cli/v1/cron_monitors?${params.toString()}`);
25
+ const monitors = res.data ?? [];
26
+ if (!this.jsonEnabled()) {
27
+ this.log((0, output_1.renderTable)(['NAME', 'STATUS', 'INTERVAL (min)', 'LAST CHECK-IN', 'ID'], monitors.map((monitor) => [
28
+ String(monitor.name ?? ''),
29
+ String(monitor.status ?? ''),
30
+ String(monitor.expected_interval_minutes ?? '-'),
31
+ String(monitor.last_check_in_at ?? '-'),
32
+ String(monitor.id ?? ''),
33
+ ])));
34
+ }
35
+ return res;
36
+ }
37
+ }
38
+ exports.default = CronMonitorsList;
@@ -0,0 +1,9 @@
1
+ import { BaseCommand } from '../../base';
2
+ export default class CronMonitorsShow 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
+ run(): Promise<unknown>;
9
+ }
@@ -0,0 +1,20 @@
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 CronMonitorsShow extends base_1.BaseCommand {
7
+ static description = 'Show a cron / heartbeat monitor';
8
+ static examples = ['<%= config.bin %> cron-monitors show <monitor-id>'];
9
+ static args = {
10
+ id: core_1.Args.string({ description: 'Cron monitor id', required: true }),
11
+ };
12
+ async run() {
13
+ const { args } = await this.parse(CronMonitorsShow);
14
+ const res = await this.api.get(`/cli/v1/cron_monitors/${args.id}`);
15
+ if (!this.jsonEnabled())
16
+ this.log((0, output_1.renderRecord)(res.data ?? {}));
17
+ return res;
18
+ }
19
+ }
20
+ exports.default = CronMonitorsShow;
@@ -7,6 +7,7 @@ export default class GroupsCreate extends BaseCommand {
7
7
  static examples: string[];
8
8
  static flags: {
9
9
  color: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
10
+ 'roadmap-enabled': import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
10
11
  };
11
12
  run(): Promise<unknown>;
12
13
  }
@@ -11,15 +11,22 @@ class GroupsCreate extends base_1.BaseCommand {
11
11
  static examples = [
12
12
  '<%= config.bin %> groups create DriverOne',
13
13
  '<%= config.bin %> groups create DriverOne --color indigo',
14
+ '<%= config.bin %> groups create DriverOne --roadmap-enabled',
14
15
  ];
15
16
  static flags = {
16
17
  color: core_1.Flags.string({ description: 'Color label' }),
18
+ 'roadmap-enabled': core_1.Flags.boolean({
19
+ allowNo: true,
20
+ description: 'Enable the roadmap and cascade it to the projects in this group',
21
+ }),
17
22
  };
18
23
  async run() {
19
24
  const { args, flags } = await this.parse(GroupsCreate);
20
25
  const body = { name: args.name };
21
26
  if (flags.color !== undefined)
22
27
  body.color = flags.color;
28
+ if (flags['roadmap-enabled'] !== undefined)
29
+ body.roadmap_enabled = flags['roadmap-enabled'];
23
30
  const res = await this.api.post('/cli/v1/groups', body);
24
31
  if (!this.jsonEnabled()) {
25
32
  this.log('Group created:');
@@ -8,6 +8,7 @@ export default class GroupsUpdate extends BaseCommand {
8
8
  static flags: {
9
9
  name: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
10
10
  color: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
11
+ 'roadmap-enabled': import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
11
12
  };
12
13
  run(): Promise<unknown>;
13
14
  }
@@ -7,14 +7,19 @@ class GroupsUpdate extends base_1.BaseCommand {
7
7
  static args = {
8
8
  group: core_1.Args.string({ description: 'Group id (UUID) or name', required: true }),
9
9
  };
10
- static description = 'Update a group (rename or recolor)';
10
+ static description = 'Update a group (rename, recolor, toggle roadmap)';
11
11
  static examples = [
12
12
  '<%= config.bin %> groups update Backend --name "Backend services"',
13
13
  '<%= config.bin %> groups update Backend --color indigo',
14
+ '<%= config.bin %> groups update Backend --roadmap-enabled',
14
15
  ];
15
16
  static flags = {
16
17
  name: core_1.Flags.string({ description: 'New name' }),
17
18
  color: core_1.Flags.string({ description: 'Color label' }),
19
+ 'roadmap-enabled': core_1.Flags.boolean({
20
+ allowNo: true,
21
+ description: 'Enable/disable the roadmap and cascade it to the projects in this group',
22
+ }),
18
23
  };
19
24
  async run() {
20
25
  const { args, flags } = await this.parse(GroupsUpdate);
@@ -24,6 +29,8 @@ class GroupsUpdate extends base_1.BaseCommand {
24
29
  body.name = flags.name;
25
30
  if (flags.color !== undefined)
26
31
  body.color = flags.color;
32
+ if (flags['roadmap-enabled'] !== undefined)
33
+ body.roadmap_enabled = flags['roadmap-enabled'];
27
34
  const res = await this.api.put(`/cli/v1/groups/${id}`, body);
28
35
  if (!this.jsonEnabled()) {
29
36
  this.log('Group updated:');
@@ -0,0 +1,12 @@
1
+ import { BaseCommand } from '../../base';
2
+ export default class IdeasArchive 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
+ project: import("@oclif/core/lib/interfaces").OptionFlag<string, import("@oclif/core/lib/interfaces").CustomOptions>;
10
+ };
11
+ run(): Promise<unknown>;
12
+ }
@@ -0,0 +1,24 @@
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 IdeasArchive extends base_1.BaseCommand {
7
+ static args = {
8
+ id: core_1.Args.string({ description: 'Idea id', required: true }),
9
+ };
10
+ static description = 'Archive an idea (open → archived; author always allowed, others need ideas.edit)';
11
+ static examples = ['<%= config.bin %> ideas archive <idea-id> --project acme-api'];
12
+ static flags = { ...base_1.projectFlag };
13
+ async run() {
14
+ const { args, flags } = await this.parse(IdeasArchive);
15
+ const projectId = await this.resolveProjectId(flags.project);
16
+ const res = await this.api.put(`/cli/v1/projects/${projectId}/ideas/${args.id}/archive`);
17
+ if (!this.jsonEnabled()) {
18
+ this.log(`Archived idea ${args.id}:`);
19
+ this.log((0, output_1.renderRecord)(res.data ?? {}));
20
+ }
21
+ return res;
22
+ }
23
+ }
24
+ exports.default = IdeasArchive;
@@ -0,0 +1,14 @@
1
+ import { BaseCommand } from '../../base';
2
+ export default class IdeasCaseDelete extends BaseCommand {
3
+ static args: {
4
+ idea: import("@oclif/core/lib/interfaces").Arg<string, Record<string, unknown>>;
5
+ case: import("@oclif/core/lib/interfaces").Arg<string, Record<string, unknown>>;
6
+ };
7
+ static description: string;
8
+ static examples: string[];
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
+ }
@@ -0,0 +1,30 @@
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 IdeasCaseDelete extends base_1.BaseCommand {
6
+ static args = {
7
+ idea: core_1.Args.string({ description: 'Idea id', required: true }),
8
+ case: core_1.Args.string({ description: 'Case id', required: true }),
9
+ };
10
+ static description = 'Delete a case from an open idea (author always allowed, others need ideas.edit)';
11
+ static examples = [
12
+ '<%= config.bin %> ideas case-delete <idea-id> <case-id> --project acme-api --confirm',
13
+ ];
14
+ static flags = {
15
+ ...base_1.projectFlag,
16
+ confirm: core_1.Flags.boolean({ description: 'Required: confirm the irreversible deletion' }),
17
+ };
18
+ async run() {
19
+ const { args, flags } = await this.parse(IdeasCaseDelete);
20
+ if (!flags.confirm) {
21
+ this.error('Refusing to delete without --confirm (the action is irreversible).', { exit: 2 });
22
+ }
23
+ const projectId = await this.resolveProjectId(flags.project);
24
+ await this.api.delete(`/cli/v1/projects/${projectId}/ideas/${args.idea}/cases/${args.case}`);
25
+ if (!this.jsonEnabled())
26
+ this.log(`Deleted case ${args.case}`);
27
+ return { deleted: args.case };
28
+ }
29
+ }
30
+ exports.default = IdeasCaseDelete;
@@ -0,0 +1,15 @@
1
+ import { BaseCommand } from '../../base';
2
+ export default class IdeasCaseUpdate extends BaseCommand {
3
+ static args: {
4
+ idea: import("@oclif/core/lib/interfaces").Arg<string, Record<string, unknown>>;
5
+ case: import("@oclif/core/lib/interfaces").Arg<string, Record<string, unknown>>;
6
+ };
7
+ static description: string;
8
+ static examples: string[];
9
+ static flags: {
10
+ title: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
11
+ description: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
12
+ project: import("@oclif/core/lib/interfaces").OptionFlag<string, import("@oclif/core/lib/interfaces").CustomOptions>;
13
+ };
14
+ run(): Promise<unknown>;
15
+ }
@@ -0,0 +1,41 @@
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 IdeasCaseUpdate extends base_1.BaseCommand {
7
+ // PATCH /cli/v1/projects/:p/ideas/:idea_id/cases/:id maps to Ideas::UpdateCase (only open ideas;
8
+ // same gate as editing the idea — author, otherwise `ideas.edit`). The CLI transport speaks PUT,
9
+ // which the Rails `resources :cases` update action accepts just like PATCH; only the passed fields
10
+ // are sent so the backend rewrites nothing you did not touch.
11
+ static args = {
12
+ idea: core_1.Args.string({ description: 'Idea id', required: true }),
13
+ case: core_1.Args.string({ description: 'Case id', required: true }),
14
+ };
15
+ static description = 'Update a case (example/scenario) of an idea (title and/or description)';
16
+ static examples = [
17
+ '<%= config.bin %> ideas case-update <idea-id> <case-id> --project acme-api --title "QR check-in"',
18
+ '<%= config.bin %> ideas case-update <idea-id> <case-id> -p acme-api --description "Staff scans the QR at the door"',
19
+ ];
20
+ static flags = {
21
+ ...base_1.projectFlag,
22
+ title: core_1.Flags.string({ description: 'New case title' }),
23
+ description: core_1.Flags.string({ description: 'New case description' }),
24
+ };
25
+ async run() {
26
+ const { args, flags } = await this.parse(IdeasCaseUpdate);
27
+ const projectId = await this.resolveProjectId(flags.project);
28
+ const body = {};
29
+ if (flags.title !== undefined)
30
+ body.title = flags.title;
31
+ if (flags.description !== undefined)
32
+ body.description = flags.description;
33
+ const res = await this.api.put(`/cli/v1/projects/${projectId}/ideas/${args.idea}/cases/${args.case}`, body);
34
+ if (!this.jsonEnabled()) {
35
+ this.log('Case updated:');
36
+ this.log((0, output_1.renderRecord)(res.data ?? {}));
37
+ }
38
+ return res;
39
+ }
40
+ }
41
+ exports.default = IdeasCaseUpdate;
@@ -0,0 +1,14 @@
1
+ import { BaseCommand } from '../../base';
2
+ export default class IdeasCase 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
+ title: import("@oclif/core/lib/interfaces").OptionFlag<string, import("@oclif/core/lib/interfaces").CustomOptions>;
10
+ description: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
11
+ project: import("@oclif/core/lib/interfaces").OptionFlag<string, import("@oclif/core/lib/interfaces").CustomOptions>;
12
+ };
13
+ run(): Promise<unknown>;
14
+ }
@@ -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 IdeasCase extends base_1.BaseCommand {
7
+ // POST /cli/v1/projects/:p/ideas/:id/cases maps to Ideas::AddCase. A case is an example/scenario
8
+ // (title + description) — content of the idea, added one at a time like comments. Only open ideas
9
+ // accept cases; same gate as editing the idea (author, otherwise `ideas.edit`).
10
+ static args = {
11
+ id: core_1.Args.string({ description: 'Idea id', required: true }),
12
+ };
13
+ static description = 'Add a case (example/scenario) to an idea (only open ideas accept cases)';
14
+ static examples = [
15
+ '<%= config.bin %> ideas case <idea-id> --project acme-api --title "QR check-in" --description "Staff scans the QR at the door"',
16
+ ];
17
+ static flags = {
18
+ ...base_1.projectFlag,
19
+ title: core_1.Flags.string({ description: 'Case title', required: true }),
20
+ description: core_1.Flags.string({ description: 'Case description (optional)' }),
21
+ };
22
+ async run() {
23
+ const { args, flags } = await this.parse(IdeasCase);
24
+ const projectId = await this.resolveProjectId(flags.project);
25
+ const res = await this.api.post(`/cli/v1/projects/${projectId}/ideas/${args.id}/cases`, { title: flags.title, description: flags.description });
26
+ if (!this.jsonEnabled()) {
27
+ this.log('Case added:');
28
+ this.log((0, output_1.renderRecord)(res.data ?? {}));
29
+ }
30
+ return res;
31
+ }
32
+ }
33
+ exports.default = IdeasCase;
@@ -0,0 +1,13 @@
1
+ import { BaseCommand } from '../../base';
2
+ export default class IdeasDelete 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,27 @@
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 IdeasDelete extends base_1.BaseCommand {
6
+ static args = {
7
+ id: core_1.Args.string({ description: 'Idea id', required: true }),
8
+ };
9
+ static description = 'Delete an idea (author always allowed; others need ideas.delete)';
10
+ static examples = ['<%= config.bin %> ideas delete <idea-id> --project acme-api --confirm'];
11
+ static flags = {
12
+ ...base_1.projectFlag,
13
+ confirm: core_1.Flags.boolean({ description: 'Required: confirm the irreversible deletion' }),
14
+ };
15
+ async run() {
16
+ const { args, flags } = await this.parse(IdeasDelete);
17
+ if (!flags.confirm) {
18
+ this.error('Refusing to delete without --confirm (the action is irreversible).', { exit: 2 });
19
+ }
20
+ const projectId = await this.resolveProjectId(flags.project);
21
+ await this.api.delete(`/cli/v1/projects/${projectId}/ideas/${args.id}`);
22
+ if (!this.jsonEnabled())
23
+ this.log(`Deleted idea ${args.id}`);
24
+ return { deleted: args.id };
25
+ }
26
+ }
27
+ exports.default = IdeasDelete;
@@ -0,0 +1,12 @@
1
+ import { BaseCommand } from '../../base';
2
+ export default class IdeasUnarchive 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
+ project: import("@oclif/core/lib/interfaces").OptionFlag<string, import("@oclif/core/lib/interfaces").CustomOptions>;
10
+ };
11
+ run(): Promise<unknown>;
12
+ }
@@ -0,0 +1,24 @@
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 IdeasUnarchive extends base_1.BaseCommand {
7
+ static args = {
8
+ id: core_1.Args.string({ description: 'Idea id', required: true }),
9
+ };
10
+ static description = 'Reopen an archived idea (archived → open; author always allowed, others need ideas.edit)';
11
+ static examples = ['<%= config.bin %> ideas unarchive <idea-id> --project acme-api'];
12
+ static flags = { ...base_1.projectFlag };
13
+ async run() {
14
+ const { args, flags } = await this.parse(IdeasUnarchive);
15
+ const projectId = await this.resolveProjectId(flags.project);
16
+ const res = await this.api.delete(`/cli/v1/projects/${projectId}/ideas/${args.id}/archive`);
17
+ if (!this.jsonEnabled()) {
18
+ this.log(`Reopened idea ${args.id}:`);
19
+ this.log((0, output_1.renderRecord)(res.data ?? {}));
20
+ }
21
+ return res;
22
+ }
23
+ }
24
+ exports.default = IdeasUnarchive;
@@ -0,0 +1,16 @@
1
+ import { BaseCommand } from '../../base';
2
+ export default class IdeasUpdate 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
+ title: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
10
+ problem: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
11
+ solution: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
12
+ stakeholders: import("@oclif/core/lib/interfaces").OptionFlag<string[] | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
13
+ project: import("@oclif/core/lib/interfaces").OptionFlag<string, import("@oclif/core/lib/interfaces").CustomOptions>;
14
+ };
15
+ run(): Promise<unknown>;
16
+ }
@@ -0,0 +1,45 @@
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 IdeasUpdate extends base_1.BaseCommand {
7
+ // PUT /cli/v1/projects/:p/ideas/:id maps to Ideas::UpdateIdea, a full replace of
8
+ // title/problem/solution: fields you omit are cleared server-side (omitting problem or title → 422,
9
+ // fail-safe). stakeholders are replaced only when provided (kept if omitted). Only open ideas can be
10
+ // edited; the author edits their own, otherwise `ideas.edit` on the project is required.
11
+ static description = 'Update an idea (full replace of title/problem/solution — omitted fields are cleared)';
12
+ static examples = [
13
+ '<%= config.bin %> ideas update <idea-id> --project acme-api --title "Referral" --problem "Growth is paid-only" --solution "Tracked invites" --stakeholders "Growth" --stakeholders "Backend"',
14
+ ];
15
+ static args = {
16
+ id: core_1.Args.string({ description: 'Idea id', required: true }),
17
+ };
18
+ static flags = {
19
+ ...base_1.projectFlag,
20
+ title: core_1.Flags.string({ description: 'Idea title' }),
21
+ problem: core_1.Flags.string({ description: 'Problem or need the idea solves' }),
22
+ solution: core_1.Flags.string({ description: 'Proposed solution (cleared if omitted)' }),
23
+ stakeholders: core_1.Flags.string({ description: 'Who it helps — repeatable (replaced only when provided)', multiple: true }),
24
+ };
25
+ async run() {
26
+ const { args, flags } = await this.parse(IdeasUpdate);
27
+ const projectId = await this.resolveProjectId(flags.project);
28
+ const body = {};
29
+ if (flags.title !== undefined)
30
+ body.title = flags.title;
31
+ if (flags.problem !== undefined)
32
+ body.problem = flags.problem;
33
+ if (flags.solution !== undefined)
34
+ body.solution = flags.solution;
35
+ if (flags.stakeholders !== undefined)
36
+ body.stakeholders = flags.stakeholders;
37
+ const res = await this.api.put(`/cli/v1/projects/${projectId}/ideas/${args.id}`, body);
38
+ if (!this.jsonEnabled()) {
39
+ this.log('Idea updated:');
40
+ this.log((0, output_1.renderRecord)(res.data ?? {}));
41
+ }
42
+ return res;
43
+ }
44
+ }
45
+ exports.default = IdeasUpdate;
@@ -0,0 +1,12 @@
1
+ import { BaseCommand } from '../../base';
2
+ export default class LogsLink 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
+ to: 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 LogsLink extends base_1.BaseCommand {
7
+ static args = {
8
+ id: core_1.Args.string({ description: 'Log entry id', required: true }),
9
+ };
10
+ static description = 'Manually link a log entry to an error group or a ticket';
11
+ static examples = [
12
+ '<%= config.bin %> logs link <log-entry-id> --to "Errors::Group:<uuid>"',
13
+ '<%= config.bin %> logs link <log-entry-id> --to "Ticketing::Ticket:<uuid>"',
14
+ ];
15
+ static flags = {
16
+ to: core_1.Flags.string({
17
+ description: 'Target to link: "Errors::Group:<uuid>" or "Ticketing::Ticket:<uuid>"',
18
+ required: true,
19
+ }),
20
+ };
21
+ async run() {
22
+ const { args, flags } = await this.parse(LogsLink);
23
+ const res = await this.api.post(`/cli/v1/log_entries/${args.id}/links`, {
24
+ linkable: flags.to,
25
+ });
26
+ if (!this.jsonEnabled()) {
27
+ this.log(`Linked log ${args.id} to ${flags.to}:`);
28
+ this.log((0, output_1.renderRecord)(res.data ?? {}));
29
+ }
30
+ return res;
31
+ }
32
+ }
33
+ exports.default = LogsLink;
@@ -0,0 +1,9 @@
1
+ import { BaseCommand } from '../../base';
2
+ export default class LogsShow 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
+ run(): Promise<unknown>;
9
+ }
@@ -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
+ const output_1 = require("../../lib/output");
6
+ class LogsShow extends base_1.BaseCommand {
7
+ static args = {
8
+ id: core_1.Args.string({ description: 'Log entry id', required: true }),
9
+ };
10
+ static description = 'Show a single log entry (attributes, trace id, correlation)';
11
+ static examples = ['<%= config.bin %> logs show <log-entry-id>'];
12
+ async run() {
13
+ const { args } = await this.parse(LogsShow);
14
+ const res = await this.api.get(`/cli/v1/log_entries/${args.id}`);
15
+ if (!this.jsonEnabled()) {
16
+ this.log((0, output_1.renderRecord)(res.data ?? {}));
17
+ }
18
+ return res;
19
+ }
20
+ }
21
+ exports.default = LogsShow;
@@ -0,0 +1,13 @@
1
+ import { BaseCommand } from '../../base';
2
+ export default class LogsUnlink extends BaseCommand {
3
+ static args: {
4
+ id: import("@oclif/core/lib/interfaces").Arg<string, Record<string, unknown>>;
5
+ link: import("@oclif/core/lib/interfaces").Arg<string, Record<string, unknown>>;
6
+ };
7
+ static description: string;
8
+ static examples: string[];
9
+ static flags: {
10
+ confirm: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
11
+ };
12
+ run(): Promise<unknown>;
13
+ }
@@ -0,0 +1,26 @@
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 LogsUnlink extends base_1.BaseCommand {
6
+ static args = {
7
+ id: core_1.Args.string({ description: 'Log entry id', required: true }),
8
+ link: core_1.Args.string({ description: 'Link id to remove', required: true }),
9
+ };
10
+ static description = 'Remove a manual log↔target link (irreversible)';
11
+ static examples = ['<%= config.bin %> logs unlink <log-entry-id> <link-id> --confirm'];
12
+ static flags = {
13
+ confirm: core_1.Flags.boolean({ description: 'Required: confirm the irreversible deletion' }),
14
+ };
15
+ async run() {
16
+ const { args, flags } = await this.parse(LogsUnlink);
17
+ if (!flags.confirm) {
18
+ this.error('Refusing to delete without --confirm (the action is irreversible).', { exit: 2 });
19
+ }
20
+ await this.api.delete(`/cli/v1/log_entries/${args.id}/links/${args.link}`);
21
+ if (!this.jsonEnabled())
22
+ this.log(`Removed link ${args.link} from log ${args.id}`);
23
+ return { deleted: args.link };
24
+ }
25
+ }
26
+ exports.default = LogsUnlink;
@@ -0,0 +1,12 @@
1
+ import { BaseCommand } from '../../base';
2
+ export default class MembersRemove 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
+ confirm: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
10
+ };
11
+ run(): Promise<unknown>;
12
+ }