centy 0.0.24 → 0.0.26

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 (246) hide show
  1. package/dist/commands/add/plan.d.ts +18 -0
  2. package/dist/commands/add/plan.d.ts.map +1 -0
  3. package/dist/commands/add/plan.js +87 -0
  4. package/dist/commands/add/plan.js.map +1 -0
  5. package/dist/commands/assign/issue.d.ts +19 -0
  6. package/dist/commands/assign/issue.d.ts.map +1 -0
  7. package/dist/commands/assign/issue.js +79 -0
  8. package/dist/commands/assign/issue.js.map +1 -0
  9. package/dist/commands/close/issue.d.ts +16 -0
  10. package/dist/commands/close/issue.d.ts.map +1 -0
  11. package/dist/commands/close/issue.js +54 -0
  12. package/dist/commands/close/issue.js.map +1 -0
  13. package/dist/commands/close/org-issue.d.ts +17 -0
  14. package/dist/commands/close/org-issue.d.ts.map +1 -0
  15. package/dist/commands/close/org-issue.js +69 -0
  16. package/dist/commands/close/org-issue.js.map +1 -0
  17. package/dist/commands/close.d.ts +22 -0
  18. package/dist/commands/close.d.ts.map +1 -0
  19. package/dist/commands/close.js +198 -0
  20. package/dist/commands/close.js.map +1 -0
  21. package/dist/commands/create/issue.d.ts +1 -0
  22. package/dist/commands/create/issue.d.ts.map +1 -1
  23. package/dist/commands/create/issue.js +6 -0
  24. package/dist/commands/create/issue.js.map +1 -1
  25. package/dist/commands/create/user.d.ts +18 -0
  26. package/dist/commands/create/user.d.ts.map +1 -0
  27. package/dist/commands/create/user.js +85 -0
  28. package/dist/commands/create/user.js.map +1 -0
  29. package/dist/commands/delete/plan.d.ts +17 -0
  30. package/dist/commands/delete/plan.d.ts.map +1 -0
  31. package/dist/commands/delete/plan.js +74 -0
  32. package/dist/commands/delete/plan.js.map +1 -0
  33. package/dist/commands/delete/user.d.ts +17 -0
  34. package/dist/commands/delete/user.d.ts.map +1 -0
  35. package/dist/commands/delete/user.js +73 -0
  36. package/dist/commands/delete/user.js.map +1 -0
  37. package/dist/commands/duplicate/doc.d.ts +19 -0
  38. package/dist/commands/duplicate/doc.d.ts.map +1 -0
  39. package/dist/commands/duplicate/doc.js +87 -0
  40. package/dist/commands/duplicate/doc.js.map +1 -0
  41. package/dist/commands/duplicate/issue.d.ts +18 -0
  42. package/dist/commands/duplicate/issue.d.ts.map +1 -0
  43. package/dist/commands/duplicate/issue.js +82 -0
  44. package/dist/commands/duplicate/issue.js.map +1 -0
  45. package/dist/commands/get/issue.d.ts +1 -0
  46. package/dist/commands/get/issue.d.ts.map +1 -1
  47. package/dist/commands/get/issue.js +38 -1
  48. package/dist/commands/get/issue.js.map +1 -1
  49. package/dist/commands/get/plan.d.ts +18 -0
  50. package/dist/commands/get/plan.d.ts.map +1 -0
  51. package/dist/commands/get/plan.js +68 -0
  52. package/dist/commands/get/plan.js.map +1 -0
  53. package/dist/commands/get/user.d.ts +17 -0
  54. package/dist/commands/get/user.d.ts.map +1 -0
  55. package/dist/commands/get/user.js +75 -0
  56. package/dist/commands/get/user.js.map +1 -0
  57. package/dist/commands/init.d.ts +7 -0
  58. package/dist/commands/init.d.ts.map +1 -1
  59. package/dist/commands/init.js +43 -1
  60. package/dist/commands/init.js.map +1 -1
  61. package/dist/commands/list/issues.d.ts +1 -0
  62. package/dist/commands/list/issues.d.ts.map +1 -1
  63. package/dist/commands/list/issues.js +9 -1
  64. package/dist/commands/list/issues.js.map +1 -1
  65. package/dist/commands/list/users.d.ts +15 -0
  66. package/dist/commands/list/users.d.ts.map +1 -0
  67. package/dist/commands/list/users.js +67 -0
  68. package/dist/commands/list/users.js.map +1 -0
  69. package/dist/commands/move/doc.d.ts +18 -0
  70. package/dist/commands/move/doc.d.ts.map +1 -0
  71. package/dist/commands/move/doc.js +82 -0
  72. package/dist/commands/move/doc.js.map +1 -0
  73. package/dist/commands/move/issue.d.ts +17 -0
  74. package/dist/commands/move/issue.d.ts.map +1 -0
  75. package/dist/commands/move/issue.js +74 -0
  76. package/dist/commands/move/issue.js.map +1 -0
  77. package/dist/commands/project/title.d.ts +19 -0
  78. package/dist/commands/project/title.d.ts.map +1 -0
  79. package/dist/commands/project/title.js +76 -0
  80. package/dist/commands/project/title.js.map +1 -0
  81. package/dist/commands/sync/users.d.ts +17 -0
  82. package/dist/commands/sync/users.d.ts.map +1 -0
  83. package/dist/commands/sync/users.js +105 -0
  84. package/dist/commands/sync/users.js.map +1 -0
  85. package/dist/commands/unassign/issue.d.ts +19 -0
  86. package/dist/commands/unassign/issue.d.ts.map +1 -0
  87. package/dist/commands/unassign/issue.js +79 -0
  88. package/dist/commands/unassign/issue.js.map +1 -0
  89. package/dist/commands/update/issue.d.ts +1 -0
  90. package/dist/commands/update/issue.d.ts.map +1 -1
  91. package/dist/commands/update/issue.js +7 -1
  92. package/dist/commands/update/issue.js.map +1 -1
  93. package/dist/commands/update/user.d.ts +20 -0
  94. package/dist/commands/update/user.d.ts.map +1 -0
  95. package/dist/commands/update/user.js +88 -0
  96. package/dist/commands/update/user.js.map +1 -0
  97. package/dist/daemon/daemon-assign-issue.d.ts +6 -0
  98. package/dist/daemon/daemon-assign-issue.d.ts.map +1 -0
  99. package/dist/daemon/daemon-assign-issue.js +17 -0
  100. package/dist/daemon/daemon-assign-issue.js.map +1 -0
  101. package/dist/daemon/daemon-create-user.d.ts +6 -0
  102. package/dist/daemon/daemon-create-user.d.ts.map +1 -0
  103. package/dist/daemon/daemon-create-user.js +17 -0
  104. package/dist/daemon/daemon-create-user.js.map +1 -0
  105. package/dist/daemon/daemon-delete-plan.d.ts +6 -0
  106. package/dist/daemon/daemon-delete-plan.d.ts.map +1 -0
  107. package/dist/daemon/daemon-delete-plan.js +17 -0
  108. package/dist/daemon/daemon-delete-plan.js.map +1 -0
  109. package/dist/daemon/daemon-delete-user.d.ts +6 -0
  110. package/dist/daemon/daemon-delete-user.d.ts.map +1 -0
  111. package/dist/daemon/daemon-delete-user.js +17 -0
  112. package/dist/daemon/daemon-delete-user.js.map +1 -0
  113. package/dist/daemon/daemon-duplicate-doc.d.ts +6 -0
  114. package/dist/daemon/daemon-duplicate-doc.d.ts.map +1 -0
  115. package/dist/daemon/daemon-duplicate-doc.js +17 -0
  116. package/dist/daemon/daemon-duplicate-doc.js.map +1 -0
  117. package/dist/daemon/daemon-duplicate-issue.d.ts +6 -0
  118. package/dist/daemon/daemon-duplicate-issue.d.ts.map +1 -0
  119. package/dist/daemon/daemon-duplicate-issue.js +17 -0
  120. package/dist/daemon/daemon-duplicate-issue.js.map +1 -0
  121. package/dist/daemon/daemon-get-plan.d.ts +6 -0
  122. package/dist/daemon/daemon-get-plan.d.ts.map +1 -0
  123. package/dist/daemon/daemon-get-plan.js +17 -0
  124. package/dist/daemon/daemon-get-plan.js.map +1 -0
  125. package/dist/daemon/daemon-get-user.d.ts +6 -0
  126. package/dist/daemon/daemon-get-user.d.ts.map +1 -0
  127. package/dist/daemon/daemon-get-user.js +17 -0
  128. package/dist/daemon/daemon-get-user.js.map +1 -0
  129. package/dist/daemon/daemon-list-users.d.ts +6 -0
  130. package/dist/daemon/daemon-list-users.d.ts.map +1 -0
  131. package/dist/daemon/daemon-list-users.js +17 -0
  132. package/dist/daemon/daemon-list-users.js.map +1 -0
  133. package/dist/daemon/daemon-move-doc.d.ts +6 -0
  134. package/dist/daemon/daemon-move-doc.d.ts.map +1 -0
  135. package/dist/daemon/daemon-move-doc.js +17 -0
  136. package/dist/daemon/daemon-move-doc.js.map +1 -0
  137. package/dist/daemon/daemon-move-issue.d.ts +6 -0
  138. package/dist/daemon/daemon-move-issue.d.ts.map +1 -0
  139. package/dist/daemon/daemon-move-issue.js +17 -0
  140. package/dist/daemon/daemon-move-issue.js.map +1 -0
  141. package/dist/daemon/daemon-set-project-title.d.ts +7 -0
  142. package/dist/daemon/daemon-set-project-title.d.ts.map +1 -0
  143. package/dist/daemon/daemon-set-project-title.js +18 -0
  144. package/dist/daemon/daemon-set-project-title.js.map +1 -0
  145. package/dist/daemon/daemon-set-project-user-title.d.ts +7 -0
  146. package/dist/daemon/daemon-set-project-user-title.d.ts.map +1 -0
  147. package/dist/daemon/daemon-set-project-user-title.js +18 -0
  148. package/dist/daemon/daemon-set-project-user-title.js.map +1 -0
  149. package/dist/daemon/daemon-spawn-agent.d.ts +6 -0
  150. package/dist/daemon/daemon-spawn-agent.d.ts.map +1 -0
  151. package/dist/daemon/daemon-spawn-agent.js +17 -0
  152. package/dist/daemon/daemon-spawn-agent.js.map +1 -0
  153. package/dist/daemon/daemon-sync-users.d.ts +6 -0
  154. package/dist/daemon/daemon-sync-users.d.ts.map +1 -0
  155. package/dist/daemon/daemon-sync-users.js +17 -0
  156. package/dist/daemon/daemon-sync-users.js.map +1 -0
  157. package/dist/daemon/daemon-unassign-issue.d.ts +6 -0
  158. package/dist/daemon/daemon-unassign-issue.d.ts.map +1 -0
  159. package/dist/daemon/daemon-unassign-issue.js +17 -0
  160. package/dist/daemon/daemon-unassign-issue.js.map +1 -0
  161. package/dist/daemon/daemon-update-plan.d.ts +6 -0
  162. package/dist/daemon/daemon-update-plan.d.ts.map +1 -0
  163. package/dist/daemon/daemon-update-plan.js +17 -0
  164. package/dist/daemon/daemon-update-plan.js.map +1 -0
  165. package/dist/daemon/daemon-update-user.d.ts +6 -0
  166. package/dist/daemon/daemon-update-user.d.ts.map +1 -0
  167. package/dist/daemon/daemon-update-user.js +17 -0
  168. package/dist/daemon/daemon-update-user.js.map +1 -0
  169. package/dist/daemon/load-proto.d.ts +20 -1
  170. package/dist/daemon/load-proto.d.ts.map +1 -1
  171. package/dist/daemon/load-proto.js.map +1 -1
  172. package/dist/daemon/types.d.ts +242 -0
  173. package/dist/daemon/types.d.ts.map +1 -1
  174. package/dist/hooks/postrun.d.ts +4 -0
  175. package/dist/hooks/postrun.d.ts.map +1 -0
  176. package/dist/hooks/postrun.js +17 -0
  177. package/dist/hooks/postrun.js.map +1 -0
  178. package/dist/lib/create-issue/create-issue.d.ts.map +1 -1
  179. package/dist/lib/create-issue/create-issue.js +3 -0
  180. package/dist/lib/create-issue/create-issue.js.map +1 -1
  181. package/dist/lib/init/init.d.ts +7 -0
  182. package/dist/lib/init/init.d.ts.map +1 -1
  183. package/dist/lib/init/init.js +51 -1
  184. package/dist/lib/init/init.js.map +1 -1
  185. package/dist/lib/install-daemon/github-api.d.ts.map +1 -1
  186. package/dist/lib/install-daemon/github-api.js +50 -39
  187. package/dist/lib/install-daemon/github-api.js.map +1 -1
  188. package/dist/tui/components/domain/AssetList.js +1 -3
  189. package/dist/tui/components/domain/AssetList.js.map +1 -1
  190. package/dist/tui/components/domain/ConfigPanel.js +1 -3
  191. package/dist/tui/components/domain/ConfigPanel.js.map +1 -1
  192. package/dist/tui/components/domain/DocCreate.d.ts.map +1 -1
  193. package/dist/tui/components/domain/DocCreate.js +10 -43
  194. package/dist/tui/components/domain/DocCreate.js.map +1 -1
  195. package/dist/tui/components/domain/IssueCreate.d.ts.map +1 -1
  196. package/dist/tui/components/domain/IssueCreate.js +11 -55
  197. package/dist/tui/components/domain/IssueCreate.js.map +1 -1
  198. package/dist/tui/components/domain/IssueEdit.d.ts.map +1 -1
  199. package/dist/tui/components/domain/IssueEdit.js +15 -54
  200. package/dist/tui/components/domain/IssueEdit.js.map +1 -1
  201. package/dist/tui/components/domain/IssueList.js +1 -1
  202. package/dist/tui/components/domain/IssueList.js.map +1 -1
  203. package/dist/tui/components/domain/PRCreate.d.ts.map +1 -1
  204. package/dist/tui/components/domain/PRCreate.js +12 -47
  205. package/dist/tui/components/domain/PRCreate.js.map +1 -1
  206. package/dist/tui/components/domain/PREdit.d.ts.map +1 -1
  207. package/dist/tui/components/domain/PREdit.js +17 -51
  208. package/dist/tui/components/domain/PREdit.js.map +1 -1
  209. package/dist/tui/components/domain/PRList.js +1 -1
  210. package/dist/tui/components/domain/PRList.js.map +1 -1
  211. package/dist/tui/components/domain/ProjectCreate.d.ts.map +1 -1
  212. package/dist/tui/components/domain/ProjectCreate.js +5 -13
  213. package/dist/tui/components/domain/ProjectCreate.js.map +1 -1
  214. package/dist/tui/components/domain/ProjectList.js +1 -3
  215. package/dist/tui/components/domain/ProjectList.js.map +1 -1
  216. package/dist/tui/components/form/FormInput.d.ts +12 -0
  217. package/dist/tui/components/form/FormInput.d.ts.map +1 -0
  218. package/dist/tui/components/form/FormInput.js +6 -0
  219. package/dist/tui/components/form/FormInput.js.map +1 -0
  220. package/dist/tui/components/form/FormTextarea.d.ts +11 -0
  221. package/dist/tui/components/form/FormTextarea.d.ts.map +1 -0
  222. package/dist/tui/components/form/FormTextarea.js +13 -0
  223. package/dist/tui/components/form/FormTextarea.js.map +1 -0
  224. package/dist/tui/components/form/index.d.ts +3 -0
  225. package/dist/tui/components/form/index.d.ts.map +1 -0
  226. package/dist/tui/components/form/index.js +3 -0
  227. package/dist/tui/components/form/index.js.map +1 -0
  228. package/dist/tui/components/layout/Sidebar.js +1 -1
  229. package/dist/tui/components/layout/Sidebar.js.map +1 -1
  230. package/dist/tui/hooks/useNavigation.d.ts +1 -0
  231. package/dist/tui/hooks/useNavigation.d.ts.map +1 -1
  232. package/dist/tui/hooks/useNavigation.js +4 -0
  233. package/dist/tui/hooks/useNavigation.js.map +1 -1
  234. package/dist/tui/state/app-state.d.ts +4 -0
  235. package/dist/tui/state/app-state.d.ts.map +1 -1
  236. package/dist/tui/state/app-state.js +7 -0
  237. package/dist/tui/state/app-state.js.map +1 -1
  238. package/dist/types/create-issue-options.d.ts +2 -0
  239. package/dist/types/create-issue-options.d.ts.map +1 -1
  240. package/dist/types/init-options.d.ts +14 -0
  241. package/dist/types/init-options.d.ts.map +1 -1
  242. package/dist/utils/is-valid-uuid.js +2 -2
  243. package/dist/utils/is-valid-uuid.js.map +1 -1
  244. package/oclif.manifest.json +1270 -155
  245. package/package.json +9 -3
  246. package/proto/centy.proto +230 -0
@@ -0,0 +1,18 @@
1
+ import { Command } from '@oclif/core';
2
+ /**
3
+ * Add or update an issue's plan
4
+ */
5
+ export default class AddPlan extends Command {
6
+ static aliases: string[];
7
+ static args: {
8
+ issueId: import("@oclif/core/interfaces").Arg<string, Record<string, unknown>>;
9
+ };
10
+ static description: string;
11
+ static examples: string[];
12
+ static flags: {
13
+ file: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
14
+ project: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
15
+ };
16
+ run(): Promise<void>;
17
+ }
18
+ //# sourceMappingURL=plan.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plan.d.ts","sourceRoot":"","sources":["../../../src/commands/add/plan.ts"],"names":[],"mappings":"AAEA,OAAO,EAAQ,OAAO,EAAS,MAAM,aAAa,CAAA;AAUlD;;GAEG;AAEH,MAAM,CAAC,OAAO,OAAO,OAAQ,SAAQ,OAAO;IAE1C,OAAgB,OAAO,WAA8B;IAGrD,OAAgB,IAAI;;MAKnB;IAGD,OAAgB,WAAW,SAAkC;IAG7D,OAAgB,QAAQ,WAKvB;IAGD,OAAgB,KAAK;;;MAMpB;IAEY,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAiDlC"}
@@ -0,0 +1,87 @@
1
+ import { readFile } from 'node:fs/promises';
2
+ // eslint-disable-next-line import/order
3
+ import { Args, Command, Flags } from '@oclif/core';
4
+ import { daemonUpdatePlan } from '../../daemon/daemon-update-plan.js';
5
+ import { projectFlag } from '../../flags/project-flag.js';
6
+ import { ensureInitialized, NotInitializedError, } from '../../utils/ensure-initialized.js';
7
+ import { resolveProjectPath } from '../../utils/resolve-project-path.js';
8
+ /**
9
+ * Add or update an issue's plan
10
+ */
11
+ // eslint-disable-next-line custom/no-default-class-export, class-export/class-export
12
+ export default class AddPlan extends Command {
13
+ // eslint-disable-next-line no-restricted-syntax
14
+ static aliases = ['update:plan', 'set:plan'];
15
+ // eslint-disable-next-line no-restricted-syntax
16
+ static args = {
17
+ issueId: Args.string({
18
+ description: 'Issue ID or display number',
19
+ required: true,
20
+ }),
21
+ };
22
+ // eslint-disable-next-line no-restricted-syntax
23
+ static description = "Add or update an issue's plan";
24
+ // eslint-disable-next-line no-restricted-syntax
25
+ static examples = [
26
+ '<%= config.bin %> add plan 1 --file ./plan.md',
27
+ '<%= config.bin %> add plan abc123 --file ./plan.md',
28
+ 'echo "# Plan" | <%= config.bin %> add plan 1',
29
+ '<%= config.bin %> add plan 1 --project centy-daemon --file ./plan.md',
30
+ ];
31
+ // eslint-disable-next-line no-restricted-syntax
32
+ static flags = {
33
+ file: Flags.string({
34
+ char: 'f',
35
+ description: 'Path to the plan file (reads from stdin if not provided)',
36
+ }),
37
+ project: projectFlag,
38
+ };
39
+ async run() {
40
+ const { args, flags } = await this.parse(AddPlan);
41
+ const cwd = await resolveProjectPath(flags.project);
42
+ try {
43
+ await ensureInitialized(cwd);
44
+ }
45
+ catch (error) {
46
+ if (error instanceof NotInitializedError) {
47
+ this.error(error.message);
48
+ }
49
+ throw error instanceof Error ? error : new Error(String(error));
50
+ }
51
+ let content;
52
+ if (flags.file) {
53
+ try {
54
+ // eslint-disable-next-line security/detect-non-literal-fs-filename
55
+ content = await readFile(flags.file, 'utf-8');
56
+ }
57
+ catch (error) {
58
+ const msg = error instanceof Error ? error.message : String(error);
59
+ if (msg.includes('ENOENT')) {
60
+ this.error(`File not found: ${flags.file}`);
61
+ }
62
+ throw error instanceof Error ? error : new Error(String(error));
63
+ }
64
+ }
65
+ else if (!process.stdin.isTTY) {
66
+ // Read from stdin
67
+ const chunks = [];
68
+ for await (const chunk of process.stdin) {
69
+ chunks.push(Buffer.from(chunk));
70
+ }
71
+ content = Buffer.concat(chunks).toString('utf-8');
72
+ }
73
+ else {
74
+ this.error('No input provided. Use --file or pipe content via stdin.');
75
+ }
76
+ const response = await daemonUpdatePlan({
77
+ projectPath: cwd,
78
+ issueId: args.issueId,
79
+ content,
80
+ });
81
+ if (!response.success) {
82
+ this.error(response.error);
83
+ }
84
+ this.log(`Plan updated for issue ${args.issueId}`);
85
+ }
86
+ }
87
+ //# sourceMappingURL=plan.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plan.js","sourceRoot":"","sources":["../../../src/commands/add/plan.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import { Command } from '@oclif/core';
2
+ /**
3
+ * Assign users to an issue
4
+ */
5
+ export default class AssignIssue extends Command {
6
+ static args: {
7
+ issueId: import("@oclif/core/interfaces").Arg<string, Record<string, unknown>>;
8
+ userIds: import("@oclif/core/interfaces").Arg<string, Record<string, unknown>>;
9
+ };
10
+ static description: string;
11
+ static examples: string[];
12
+ static flags: {
13
+ json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
14
+ project: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
15
+ };
16
+ static strict: boolean;
17
+ run(): Promise<void>;
18
+ }
19
+ //# sourceMappingURL=issue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"issue.d.ts","sourceRoot":"","sources":["../../../src/commands/assign/issue.ts"],"names":[],"mappings":"AACA,OAAO,EAAQ,OAAO,EAAS,MAAM,aAAa,CAAA;AAUlD;;GAEG;AAEH,MAAM,CAAC,OAAO,OAAO,WAAY,SAAQ,OAAO;IAE9C,OAAgB,IAAI;;;MASnB;IAGD,OAAgB,WAAW,SAA6B;IAGxD,OAAgB,QAAQ,WAIvB;IAGD,OAAgB,KAAK;;;MAMpB;IAGD,OAAgB,MAAM,UAAQ;IAEjB,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CA8ClC"}
@@ -0,0 +1,79 @@
1
+ // eslint-disable-next-line import/order
2
+ import { Args, Command, Flags } from '@oclif/core';
3
+ import { daemonAssignIssue } from '../../daemon/daemon-assign-issue.js';
4
+ import { projectFlag } from '../../flags/project-flag.js';
5
+ import { ensureInitialized, NotInitializedError, } from '../../utils/ensure-initialized.js';
6
+ import { resolveProjectPath } from '../../utils/resolve-project-path.js';
7
+ /**
8
+ * Assign users to an issue
9
+ */
10
+ // eslint-disable-next-line custom/no-default-class-export, class-export/class-export
11
+ export default class AssignIssue extends Command {
12
+ // eslint-disable-next-line no-restricted-syntax
13
+ static args = {
14
+ issueId: Args.string({
15
+ description: 'Issue ID (UUID) or display number',
16
+ required: true,
17
+ }),
18
+ userIds: Args.string({
19
+ description: 'User IDs to assign (space-separated)',
20
+ required: true,
21
+ }),
22
+ };
23
+ // eslint-disable-next-line no-restricted-syntax
24
+ static description = 'Assign users to an issue';
25
+ // eslint-disable-next-line no-restricted-syntax
26
+ static examples = [
27
+ '<%= config.bin %> assign issue 1 john-doe',
28
+ '<%= config.bin %> assign issue abc123-uuid alice bob',
29
+ '<%= config.bin %> assign issue 1 john-doe --project centy-daemon',
30
+ ];
31
+ // eslint-disable-next-line no-restricted-syntax
32
+ static flags = {
33
+ json: Flags.boolean({
34
+ description: 'Output as JSON',
35
+ default: false,
36
+ }),
37
+ project: projectFlag,
38
+ };
39
+ // eslint-disable-next-line no-restricted-syntax
40
+ static strict = false;
41
+ async run() {
42
+ const { args, argv, flags } = await this.parse(AssignIssue);
43
+ const cwd = await resolveProjectPath(flags.project);
44
+ try {
45
+ await ensureInitialized(cwd);
46
+ }
47
+ catch (error) {
48
+ if (error instanceof NotInitializedError) {
49
+ this.error(error.message);
50
+ }
51
+ throw error instanceof Error ? error : new Error(String(error));
52
+ }
53
+ // Get all user IDs from argv (everything after the issue ID)
54
+ // eslint-disable-next-line no-restricted-syntax
55
+ const userIds = argv.slice(1);
56
+ if (userIds.length === 0) {
57
+ this.error('At least one user ID is required');
58
+ }
59
+ const response = await daemonAssignIssue({
60
+ projectPath: cwd,
61
+ issueId: args.issueId,
62
+ userIds,
63
+ });
64
+ if (!response.success) {
65
+ this.error(response.error);
66
+ }
67
+ if (flags.json) {
68
+ this.log(JSON.stringify(response.issue, null, 2));
69
+ return;
70
+ }
71
+ const issue = response.issue;
72
+ if (issue !== undefined) {
73
+ this.log(`Assigned ${userIds.join(', ')} to issue #${issue.displayNumber}`);
74
+ const assignees = issue.metadata.assignees;
75
+ this.log(`Current assignees: ${assignees.length > 0 ? assignees.join(', ') : 'none'}`);
76
+ }
77
+ }
78
+ }
79
+ //# sourceMappingURL=issue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"issue.js","sourceRoot":"","sources":["../../../src/commands/assign/issue.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import { Command } from '@oclif/core';
2
+ /**
3
+ * Close an issue by setting its status to closed
4
+ */
5
+ export default class CloseIssue extends Command {
6
+ static args: {
7
+ id: import("@oclif/core/interfaces").Arg<string, Record<string, unknown>>;
8
+ };
9
+ static description: string;
10
+ static examples: string[];
11
+ static flags: {
12
+ project: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
13
+ };
14
+ run(): Promise<void>;
15
+ }
16
+ //# sourceMappingURL=issue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"issue.d.ts","sourceRoot":"","sources":["../../../src/commands/close/issue.ts"],"names":[],"mappings":"AACA,OAAO,EAAQ,OAAO,EAAE,MAAM,aAAa,CAAA;AAU3C;;GAEG;AAEH,MAAM,CAAC,OAAO,OAAO,UAAW,SAAQ,OAAO;IAE7C,OAAgB,IAAI;;MAKnB;IAGD,OAAgB,WAAW,SAAmB;IAG9C,OAAgB,QAAQ,WAIvB;IAGD,OAAgB,KAAK;;MAEpB;IAEY,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAyBlC"}
@@ -0,0 +1,54 @@
1
+ // eslint-disable-next-line import/order
2
+ import { Args, Command } from '@oclif/core';
3
+ import { daemonUpdateIssue } from '../../daemon/daemon-update-issue.js';
4
+ import { projectFlag } from '../../flags/project-flag.js';
5
+ import { ensureInitialized, NotInitializedError, } from '../../utils/ensure-initialized.js';
6
+ import { resolveProjectPath } from '../../utils/resolve-project-path.js';
7
+ /**
8
+ * Close an issue by setting its status to closed
9
+ */
10
+ // eslint-disable-next-line custom/no-default-class-export, class-export/class-export
11
+ export default class CloseIssue extends Command {
12
+ // eslint-disable-next-line no-restricted-syntax
13
+ static args = {
14
+ id: Args.string({
15
+ description: 'Issue ID (UUID) or display number',
16
+ required: true,
17
+ }),
18
+ };
19
+ // eslint-disable-next-line no-restricted-syntax
20
+ static description = 'Close an issue';
21
+ // eslint-disable-next-line no-restricted-syntax
22
+ static examples = [
23
+ '<%= config.bin %> close issue 1',
24
+ '<%= config.bin %> close issue abc123-uuid',
25
+ '<%= config.bin %> close issue 1 --project centy-daemon',
26
+ ];
27
+ // eslint-disable-next-line no-restricted-syntax
28
+ static flags = {
29
+ project: projectFlag,
30
+ };
31
+ async run() {
32
+ const { args, flags } = await this.parse(CloseIssue);
33
+ const cwd = await resolveProjectPath(flags.project);
34
+ try {
35
+ await ensureInitialized(cwd);
36
+ }
37
+ catch (error) {
38
+ if (error instanceof NotInitializedError) {
39
+ this.error(error.message);
40
+ }
41
+ throw error instanceof Error ? error : new Error(String(error));
42
+ }
43
+ const response = await daemonUpdateIssue({
44
+ projectPath: cwd,
45
+ issueId: args.id,
46
+ status: 'closed',
47
+ });
48
+ if (!response.success) {
49
+ this.error(response.error);
50
+ }
51
+ this.log(`Closed issue #${response.issue.displayNumber}`);
52
+ }
53
+ }
54
+ //# sourceMappingURL=issue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"issue.js","sourceRoot":"","sources":["../../../src/commands/close/issue.ts"],"names":[],"mappings":"AAAA,wCAAwC;AACxC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAE3C,OAAO,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAA;AACvE,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAA;AACzD,OAAO,EACL,iBAAiB,EACjB,mBAAmB,GACpB,MAAM,mCAAmC,CAAA;AAC1C,OAAO,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAA;AAExE;;GAEG;AACH,qFAAqF;AACrF,MAAM,CAAC,OAAO,OAAO,UAAW,SAAQ,OAAO;IAC7C,gDAAgD;IAChD,MAAM,CAAU,IAAI,GAAG;QACrB,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC;YACd,WAAW,EAAE,mCAAmC;YAChD,QAAQ,EAAE,IAAI;SACf,CAAC;KACH,CAAA;IAED,gDAAgD;IAChD,MAAM,CAAU,WAAW,GAAG,gBAAgB,CAAA;IAE9C,gDAAgD;IAChD,MAAM,CAAU,QAAQ,GAAG;QACzB,iCAAiC;QACjC,2CAA2C;QAC3C,wDAAwD;KACzD,CAAA;IAED,gDAAgD;IAChD,MAAM,CAAU,KAAK,GAAG;QACtB,OAAO,EAAE,WAAW;KACrB,CAAA;IAEM,KAAK,CAAC,GAAG;QACd,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAA;QACpD,MAAM,GAAG,GAAG,MAAM,kBAAkB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;QAEnD,IAAI,CAAC;YACH,MAAM,iBAAiB,CAAC,GAAG,CAAC,CAAA;QAC9B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,mBAAmB,EAAE,CAAC;gBACzC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;YAC3B,CAAC;YACD,MAAM,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAA;QACjE,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,iBAAiB,CAAC;YACvC,WAAW,EAAE,GAAG;YAChB,OAAO,EAAE,IAAI,CAAC,EAAE;YAChB,MAAM,EAAE,QAAQ;SACjB,CAAC,CAAA;QAEF,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;YACtB,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;QAC5B,CAAC;QAED,IAAI,CAAC,GAAG,CAAC,iBAAiB,QAAQ,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC,CAAA;IAC3D,CAAC"}
@@ -0,0 +1,17 @@
1
+ import { Command } from '@oclif/core';
2
+ /**
3
+ * Close an organization-level issue by setting its status to closed
4
+ */
5
+ export default class CloseOrgIssue extends Command {
6
+ static description: string;
7
+ static examples: string[];
8
+ static args: {
9
+ identifier: import("@oclif/core/interfaces").Arg<string, Record<string, unknown>>;
10
+ };
11
+ static flags: {
12
+ org: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
13
+ json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
14
+ };
15
+ run(): Promise<void>;
16
+ }
17
+ //# sourceMappingURL=org-issue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"org-issue.d.ts","sourceRoot":"","sources":["../../../src/commands/close/org-issue.ts"],"names":[],"mappings":"AACA,OAAO,EAAQ,OAAO,EAAS,MAAM,aAAa,CAAA;AAKlD;;GAEG;AAEH,MAAM,CAAC,OAAO,OAAO,aAAc,SAAQ,OAAO;IAEhD,OAAgB,WAAW,SAAsC;IAGjE,OAAgB,QAAQ,WAIvB;IAGD,OAAgB,IAAI;;MAKnB;IAGD,OAAgB,KAAK;;;MAUpB;IAEY,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAoClC"}
@@ -0,0 +1,69 @@
1
+ // eslint-disable-next-line import/order
2
+ import { Args, Command, Flags } from '@oclif/core';
3
+ import { daemonGetOrgIssueByDisplayNumber } from '../../daemon/daemon-get-org-issue-by-display-number.js';
4
+ import { daemonUpdateOrgIssue } from '../../daemon/daemon-update-org-issue.js';
5
+ /**
6
+ * Close an organization-level issue by setting its status to closed
7
+ */
8
+ // eslint-disable-next-line custom/no-default-class-export, class-export/class-export
9
+ export default class CloseOrgIssue extends Command {
10
+ // eslint-disable-next-line no-restricted-syntax
11
+ static description = 'Close an organization-level issue';
12
+ // eslint-disable-next-line no-restricted-syntax
13
+ static examples = [
14
+ '<%= config.bin %> close org-issue --org my-org 1',
15
+ '<%= config.bin %> close org-issue --org my-org #1',
16
+ '<%= config.bin %> close org-issue -o centy-io abc123',
17
+ ];
18
+ // eslint-disable-next-line no-restricted-syntax
19
+ static args = {
20
+ identifier: Args.string({
21
+ description: 'Issue ID or display number (#N or just N)',
22
+ required: true,
23
+ }),
24
+ };
25
+ // eslint-disable-next-line no-restricted-syntax
26
+ static flags = {
27
+ org: Flags.string({
28
+ char: 'o',
29
+ description: 'Organization slug',
30
+ required: true,
31
+ }),
32
+ json: Flags.boolean({
33
+ description: 'Output as JSON',
34
+ default: false,
35
+ }),
36
+ };
37
+ async run() {
38
+ const { args, flags } = await this.parse(CloseOrgIssue);
39
+ // Resolve issue ID from display number if needed
40
+ let issueId;
41
+ const identifier = args.identifier;
42
+ const displayNumberMatch = identifier.match(/^#?(\d+)$/);
43
+ if (displayNumberMatch) {
44
+ const displayNumber = Number.parseInt(displayNumberMatch[1], 10);
45
+ const issue = await daemonGetOrgIssueByDisplayNumber({
46
+ orgSlug: flags.org,
47
+ displayNumber,
48
+ });
49
+ issueId = issue.id;
50
+ }
51
+ else {
52
+ issueId = identifier;
53
+ }
54
+ const response = await daemonUpdateOrgIssue({
55
+ orgSlug: flags.org,
56
+ issueId,
57
+ status: 'closed',
58
+ });
59
+ if (!response.success) {
60
+ this.error(response.error);
61
+ }
62
+ if (flags.json) {
63
+ this.log(JSON.stringify(response.issue, null, 2));
64
+ return;
65
+ }
66
+ this.log(`Closed organization issue #${response.issue.displayNumber}`);
67
+ }
68
+ }
69
+ //# sourceMappingURL=org-issue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"org-issue.js","sourceRoot":"","sources":["../../../src/commands/close/org-issue.ts"],"names":[],"mappings":"AAAA,wCAAwC;AACxC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AAElD,OAAO,EAAE,gCAAgC,EAAE,MAAM,wDAAwD,CAAA;AACzG,OAAO,EAAE,oBAAoB,EAAE,MAAM,yCAAyC,CAAA;AAE9E;;GAEG;AACH,qFAAqF;AACrF,MAAM,CAAC,OAAO,OAAO,aAAc,SAAQ,OAAO;IAChD,gDAAgD;IAChD,MAAM,CAAU,WAAW,GAAG,mCAAmC,CAAA;IAEjE,gDAAgD;IAChD,MAAM,CAAU,QAAQ,GAAG;QACzB,kDAAkD;QAClD,mDAAmD;QACnD,sDAAsD;KACvD,CAAA;IAED,gDAAgD;IAChD,MAAM,CAAU,IAAI,GAAG;QACrB,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC;YACtB,WAAW,EAAE,2CAA2C;YACxD,QAAQ,EAAE,IAAI;SACf,CAAC;KACH,CAAA;IAED,gDAAgD;IAChD,MAAM,CAAU,KAAK,GAAG;QACtB,GAAG,EAAE,KAAK,CAAC,MAAM,CAAC;YAChB,IAAI,EAAE,GAAG;YACT,WAAW,EAAE,mBAAmB;YAChC,QAAQ,EAAE,IAAI;SACf,CAAC;QACF,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC;YAClB,WAAW,EAAE,gBAAgB;YAC7B,OAAO,EAAE,KAAK;SACf,CAAC;KACH,CAAA;IAEM,KAAK,CAAC,GAAG;QACd,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAA;QAEvD,iDAAiD;QACjD,IAAI,OAAe,CAAA;QACnB,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAA;QAClC,MAAM,kBAAkB,GAAG,UAAU,CAAC,KAAK,CAAC,WAAW,CAAC,CAAA;QAExD,IAAI,kBAAkB,EAAE,CAAC;YACvB,MAAM,aAAa,GAAG,MAAM,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;YAChE,MAAM,KAAK,GAAG,MAAM,gCAAgC,CAAC;gBACnD,OAAO,EAAE,KAAK,CAAC,GAAG;gBAClB,aAAa;aACd,CAAC,CAAA;YACF,OAAO,GAAG,KAAK,CAAC,EAAE,CAAA;QACpB,CAAC;aAAM,CAAC;YACN,OAAO,GAAG,UAAU,CAAA;QACtB,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,oBAAoB,CAAC;YAC1C,OAAO,EAAE,KAAK,CAAC,GAAG;YAClB,OAAO;YACP,MAAM,EAAE,QAAQ;SACjB,CAAC,CAAA;QAEF,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;YACtB,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;QAC5B,CAAC;QAED,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;YACf,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;YACjD,OAAM;QACR,CAAC;QAED,IAAI,CAAC,GAAG,CAAC,8BAA8B,QAAQ,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC,CAAA;IACxE,CAAC"}
@@ -0,0 +1,22 @@
1
+ import { Command } from '@oclif/core';
2
+ /**
3
+ * Generic close command for issues, PRs, and org-issues
4
+ */
5
+ export default class Close extends Command {
6
+ static args: {
7
+ identifier: import("@oclif/core/interfaces").Arg<string, Record<string, unknown>>;
8
+ };
9
+ static description: string;
10
+ static examples: string[];
11
+ static flags: {
12
+ type: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
13
+ org: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
14
+ project: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
15
+ json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
16
+ };
17
+ run(): Promise<void>;
18
+ private closeIssue;
19
+ private closePr;
20
+ private closeOrgIssue;
21
+ }
22
+ //# sourceMappingURL=close.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"close.d.ts","sourceRoot":"","sources":["../../src/commands/close.ts"],"names":[],"mappings":"AAGA,OAAO,EAAQ,OAAO,EAAS,MAAM,aAAa,CAAA;AAuBlD;;GAEG;AAEH,MAAM,CAAC,OAAO,OAAO,KAAM,SAAQ,OAAO;IAExC,OAAgB,IAAI;;MAKnB;IAGD,OAAgB,WAAW,SAC2B;IAGtD,OAAgB,QAAQ,WAOvB;IAGD,OAAgB,KAAK;;;;;MAepB;IAGY,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;YAmGnB,UAAU;YA4BV,OAAO;YA4BP,aAAa;CA6B5B"}
@@ -0,0 +1,198 @@
1
+ /* eslint-disable max-lines */
2
+ // eslint-disable-next-line import/order
3
+ import { Args, Command, Flags } from '@oclif/core';
4
+ import { daemonGetIssueByDisplayNumber } from '../daemon/daemon-get-issue-by-display-number.js';
5
+ import { daemonGetOrgIssueByDisplayNumber } from '../daemon/daemon-get-org-issue-by-display-number.js';
6
+ import { daemonGetPrByDisplayNumber } from '../daemon/daemon-get-pr-by-display-number.js';
7
+ import { daemonUpdateIssue } from '../daemon/daemon-update-issue.js';
8
+ import { daemonUpdateOrgIssue } from '../daemon/daemon-update-org-issue.js';
9
+ import { daemonUpdatePr } from '../daemon/daemon-update-pr.js';
10
+ import { projectFlag } from '../flags/project-flag.js';
11
+ import { ensureInitialized, NotInitializedError, } from '../utils/ensure-initialized.js';
12
+ import { resolveProjectPath } from '../utils/resolve-project-path.js';
13
+ /**
14
+ * Generic close command for issues, PRs, and org-issues
15
+ */
16
+ // eslint-disable-next-line custom/no-default-class-export, class-export/class-export
17
+ export default class Close extends Command {
18
+ // eslint-disable-next-line no-restricted-syntax
19
+ static args = {
20
+ identifier: Args.string({
21
+ description: 'Display number (#N or N) or UUID',
22
+ required: true,
23
+ }),
24
+ };
25
+ // eslint-disable-next-line no-restricted-syntax
26
+ static description = 'Close an issue, PR, or org-issue by display number';
27
+ // eslint-disable-next-line no-restricted-syntax
28
+ static examples = [
29
+ '<%= config.bin %> close 1',
30
+ '<%= config.bin %> close #1',
31
+ '<%= config.bin %> close 1 --type issue',
32
+ '<%= config.bin %> close 1 --type pr',
33
+ '<%= config.bin %> close 1 --org my-org',
34
+ '<%= config.bin %> close 1 --project centy-daemon',
35
+ ];
36
+ // eslint-disable-next-line no-restricted-syntax
37
+ static flags = {
38
+ type: Flags.string({
39
+ char: 't',
40
+ description: 'Entity type (issue, pr, org-issue)',
41
+ options: ['issue', 'pr', 'org-issue'],
42
+ }),
43
+ org: Flags.string({
44
+ char: 'o',
45
+ description: 'Organization slug (for org-issues)',
46
+ }),
47
+ project: projectFlag,
48
+ json: Flags.boolean({
49
+ description: 'Output as JSON',
50
+ default: false,
51
+ }),
52
+ };
53
+ // eslint-disable-next-line max-lines-per-function
54
+ async run() {
55
+ const { args, flags } = await this.parse(Close);
56
+ // Parse display number (supports #1 or 1 format)
57
+ const displayNumberMatch = args.identifier.match(/^#?(\d+)$/);
58
+ if (!displayNumberMatch) {
59
+ this.error('Invalid identifier. Please provide a display number (e.g., 1 or #1)');
60
+ }
61
+ const displayNumber = Number.parseInt(displayNumberMatch[1], 10);
62
+ // Handle org-issue case
63
+ if (flags.org !== undefined || flags.type === 'org-issue') {
64
+ if (flags.org === undefined) {
65
+ this.error('Organization slug is required for org-issues. Use --org <slug>');
66
+ }
67
+ await this.closeOrgIssue(flags.org, displayNumber, flags.json);
68
+ return;
69
+ }
70
+ // Resolve project path for local entities
71
+ const cwd = await resolveProjectPath(flags.project);
72
+ try {
73
+ await ensureInitialized(cwd);
74
+ }
75
+ catch (error) {
76
+ if (error instanceof NotInitializedError) {
77
+ this.error(error.message);
78
+ }
79
+ throw error instanceof Error ? error : new Error(String(error));
80
+ }
81
+ // If type is specified, close that type directly
82
+ if (flags.type !== undefined) {
83
+ if (flags.type === 'issue') {
84
+ await this.closeIssue(cwd, displayNumber, flags.json);
85
+ }
86
+ else if (flags.type === 'pr') {
87
+ await this.closePr(cwd, displayNumber, flags.json);
88
+ }
89
+ return;
90
+ }
91
+ // Search for entities with this display number
92
+ const foundEntities = [];
93
+ // Try to find issue
94
+ try {
95
+ const issue = await daemonGetIssueByDisplayNumber({
96
+ projectPath: cwd,
97
+ displayNumber,
98
+ });
99
+ foundEntities.push({
100
+ type: 'issue',
101
+ id: issue.id,
102
+ displayNumber: issue.displayNumber,
103
+ });
104
+ }
105
+ catch {
106
+ // Issue not found, continue
107
+ }
108
+ // Try to find PR
109
+ try {
110
+ const pr = await daemonGetPrByDisplayNumber({
111
+ projectPath: cwd,
112
+ displayNumber,
113
+ });
114
+ foundEntities.push({
115
+ type: 'pr',
116
+ id: pr.id,
117
+ displayNumber: pr.displayNumber,
118
+ });
119
+ }
120
+ catch {
121
+ // PR not found, continue
122
+ }
123
+ // Handle results
124
+ if (foundEntities.length === 0) {
125
+ this.error(`No issue or PR found with display number #${displayNumber}`);
126
+ }
127
+ if (foundEntities.length > 1) {
128
+ const types = foundEntities.map(e => e.type).join(', ');
129
+ this.error(`Ambiguous: found multiple entities with #${displayNumber} (${types}). Use --type to specify which to close.`);
130
+ }
131
+ // Close the single found entity
132
+ const entity = foundEntities[0];
133
+ if (entity.type === 'issue') {
134
+ await this.closeIssue(cwd, displayNumber, flags.json);
135
+ }
136
+ else if (entity.type === 'pr') {
137
+ await this.closePr(cwd, displayNumber, flags.json);
138
+ }
139
+ }
140
+ async closeIssue(projectPath, displayNumber, jsonOutput) {
141
+ const issue = await daemonGetIssueByDisplayNumber({
142
+ projectPath,
143
+ displayNumber,
144
+ });
145
+ const response = await daemonUpdateIssue({
146
+ projectPath,
147
+ issueId: issue.id,
148
+ status: 'closed',
149
+ });
150
+ if (!response.success) {
151
+ this.error(response.error);
152
+ }
153
+ if (jsonOutput) {
154
+ this.log(JSON.stringify({ type: 'issue', ...response.issue }, null, 2));
155
+ return;
156
+ }
157
+ this.log(`Closed issue #${response.issue.displayNumber}`);
158
+ }
159
+ async closePr(projectPath, displayNumber, jsonOutput) {
160
+ const pr = await daemonGetPrByDisplayNumber({
161
+ projectPath,
162
+ displayNumber,
163
+ });
164
+ const response = await daemonUpdatePr({
165
+ projectPath,
166
+ prId: pr.id,
167
+ status: 'closed',
168
+ });
169
+ if (!response.success) {
170
+ this.error(response.error);
171
+ }
172
+ if (jsonOutput) {
173
+ this.log(JSON.stringify({ type: 'pr', ...response.pr }, null, 2));
174
+ return;
175
+ }
176
+ this.log(`Closed PR #${response.pr.displayNumber}`);
177
+ }
178
+ async closeOrgIssue(orgSlug, displayNumber, jsonOutput) {
179
+ const issue = await daemonGetOrgIssueByDisplayNumber({
180
+ orgSlug,
181
+ displayNumber,
182
+ });
183
+ const response = await daemonUpdateOrgIssue({
184
+ orgSlug,
185
+ issueId: issue.id,
186
+ status: 'closed',
187
+ });
188
+ if (!response.success) {
189
+ this.error(response.error);
190
+ }
191
+ if (jsonOutput) {
192
+ this.log(JSON.stringify({ type: 'org-issue', ...response.issue }, null, 2));
193
+ return;
194
+ }
195
+ this.log(`Closed organization issue #${response.issue.displayNumber}`);
196
+ }
197
+ }
198
+ //# sourceMappingURL=close.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"close.js","sourceRoot":"","sources":["../../src/commands/close.ts"],"names":[],"mappings":"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"}
@@ -10,6 +10,7 @@ export default class CreateIssue extends Command {
10
10
  description: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
11
11
  priority: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
12
12
  status: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
13
+ draft: import("@oclif/core/interfaces").BooleanFlag<boolean>;
13
14
  project: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
14
15
  };
15
16
  run(): Promise<void>;