centy 0.0.20 → 0.0.22

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 (193) hide show
  1. package/bin/run.js +19 -2
  2. package/dist/commands/add/asset.d.ts +1 -0
  3. package/dist/commands/add/asset.d.ts.map +1 -1
  4. package/dist/commands/add/asset.js +14 -5
  5. package/dist/commands/add/asset.js.map +1 -1
  6. package/dist/commands/compact.d.ts.map +1 -1
  7. package/dist/commands/compact.js +9 -4
  8. package/dist/commands/compact.js.map +1 -1
  9. package/dist/commands/config.d.ts.map +1 -1
  10. package/dist/commands/config.js +9 -4
  11. package/dist/commands/config.js.map +1 -1
  12. package/dist/commands/create/doc.d.ts +1 -0
  13. package/dist/commands/create/doc.d.ts.map +1 -1
  14. package/dist/commands/create/doc.js +14 -5
  15. package/dist/commands/create/doc.js.map +1 -1
  16. package/dist/commands/create/issue.d.ts +1 -0
  17. package/dist/commands/create/issue.d.ts.map +1 -1
  18. package/dist/commands/create/issue.js +5 -2
  19. package/dist/commands/create/issue.js.map +1 -1
  20. package/dist/commands/create/pr.d.ts +1 -0
  21. package/dist/commands/create/pr.d.ts.map +1 -1
  22. package/dist/commands/create/pr.js +5 -1
  23. package/dist/commands/create/pr.js.map +1 -1
  24. package/dist/commands/delete/asset.d.ts +1 -0
  25. package/dist/commands/delete/asset.d.ts.map +1 -1
  26. package/dist/commands/delete/asset.js +14 -5
  27. package/dist/commands/delete/asset.js.map +1 -1
  28. package/dist/commands/delete/doc.d.ts +1 -0
  29. package/dist/commands/delete/doc.d.ts.map +1 -1
  30. package/dist/commands/delete/doc.js +14 -5
  31. package/dist/commands/delete/doc.js.map +1 -1
  32. package/dist/commands/delete/issue.d.ts +1 -0
  33. package/dist/commands/delete/issue.d.ts.map +1 -1
  34. package/dist/commands/delete/issue.js +14 -5
  35. package/dist/commands/delete/issue.js.map +1 -1
  36. package/dist/commands/delete/pr.d.ts +1 -0
  37. package/dist/commands/delete/pr.d.ts.map +1 -1
  38. package/dist/commands/delete/pr.js +14 -5
  39. package/dist/commands/delete/pr.js.map +1 -1
  40. package/dist/commands/get/asset.d.ts +2 -0
  41. package/dist/commands/get/asset.d.ts.map +1 -1
  42. package/dist/commands/get/asset.js +15 -5
  43. package/dist/commands/get/asset.js.map +1 -1
  44. package/dist/commands/get/doc.d.ts +3 -0
  45. package/dist/commands/get/doc.d.ts.map +1 -1
  46. package/dist/commands/get/doc.js +98 -17
  47. package/dist/commands/get/doc.js.map +1 -1
  48. package/dist/commands/get/issue.d.ts +3 -0
  49. package/dist/commands/get/issue.d.ts.map +1 -1
  50. package/dist/commands/get/issue.js +121 -27
  51. package/dist/commands/get/issue.js.map +1 -1
  52. package/dist/commands/get/pr.d.ts +3 -0
  53. package/dist/commands/get/pr.d.ts.map +1 -1
  54. package/dist/commands/get/pr.js +136 -40
  55. package/dist/commands/get/pr.js.map +1 -1
  56. package/dist/commands/get/project.d.ts +1 -0
  57. package/dist/commands/get/project.d.ts.map +1 -1
  58. package/dist/commands/get/project.js +1 -0
  59. package/dist/commands/get/project.js.map +1 -1
  60. package/dist/commands/list/assets.d.ts +1 -0
  61. package/dist/commands/list/assets.d.ts.map +1 -1
  62. package/dist/commands/list/assets.js +14 -5
  63. package/dist/commands/list/assets.js.map +1 -1
  64. package/dist/commands/list/docs.d.ts +1 -0
  65. package/dist/commands/list/docs.d.ts.map +1 -1
  66. package/dist/commands/list/docs.js +14 -5
  67. package/dist/commands/list/docs.js.map +1 -1
  68. package/dist/commands/list/issues.d.ts +1 -0
  69. package/dist/commands/list/issues.d.ts.map +1 -1
  70. package/dist/commands/list/issues.js +14 -5
  71. package/dist/commands/list/issues.js.map +1 -1
  72. package/dist/commands/list/prs.d.ts +1 -0
  73. package/dist/commands/list/prs.d.ts.map +1 -1
  74. package/dist/commands/list/prs.js +14 -5
  75. package/dist/commands/list/prs.js.map +1 -1
  76. package/dist/commands/manifest.d.ts.map +1 -1
  77. package/dist/commands/manifest.js +9 -4
  78. package/dist/commands/manifest.js.map +1 -1
  79. package/dist/commands/start.d.ts +2 -0
  80. package/dist/commands/start.d.ts.map +1 -1
  81. package/dist/commands/start.js +56 -2
  82. package/dist/commands/start.js.map +1 -1
  83. package/dist/commands/update/doc.d.ts +1 -0
  84. package/dist/commands/update/doc.d.ts.map +1 -1
  85. package/dist/commands/update/doc.js +14 -5
  86. package/dist/commands/update/doc.js.map +1 -1
  87. package/dist/commands/update/issue.d.ts +1 -0
  88. package/dist/commands/update/issue.d.ts.map +1 -1
  89. package/dist/commands/update/issue.js +14 -5
  90. package/dist/commands/update/issue.js.map +1 -1
  91. package/dist/commands/update/pr.d.ts +1 -0
  92. package/dist/commands/update/pr.d.ts.map +1 -1
  93. package/dist/commands/update/pr.js +14 -5
  94. package/dist/commands/update/pr.js.map +1 -1
  95. package/dist/commands/update.d.ts.map +1 -1
  96. package/dist/commands/update.js +9 -4
  97. package/dist/commands/update.js.map +1 -1
  98. package/dist/commands/version.d.ts.map +1 -1
  99. package/dist/commands/version.js +9 -4
  100. package/dist/commands/version.js.map +1 -1
  101. package/dist/daemon/daemon-get-docs-by-slug.d.ts +6 -0
  102. package/dist/daemon/daemon-get-docs-by-slug.d.ts.map +1 -0
  103. package/dist/daemon/daemon-get-docs-by-slug.js +17 -0
  104. package/dist/daemon/daemon-get-docs-by-slug.js.map +1 -0
  105. package/dist/daemon/daemon-get-issues-by-uuid.d.ts +6 -0
  106. package/dist/daemon/daemon-get-issues-by-uuid.d.ts.map +1 -0
  107. package/dist/daemon/daemon-get-issues-by-uuid.js +17 -0
  108. package/dist/daemon/daemon-get-issues-by-uuid.js.map +1 -0
  109. package/dist/daemon/daemon-get-prs-by-uuid.d.ts +6 -0
  110. package/dist/daemon/daemon-get-prs-by-uuid.d.ts.map +1 -0
  111. package/dist/daemon/daemon-get-prs-by-uuid.js +17 -0
  112. package/dist/daemon/daemon-get-prs-by-uuid.js.map +1 -0
  113. package/dist/daemon/load-proto.d.ts +4 -1
  114. package/dist/daemon/load-proto.d.ts.map +1 -1
  115. package/dist/daemon/load-proto.js.map +1 -1
  116. package/dist/daemon/types.d.ts +39 -0
  117. package/dist/daemon/types.d.ts.map +1 -1
  118. package/dist/flags/project-flag.d.ts +6 -0
  119. package/dist/flags/project-flag.d.ts.map +1 -0
  120. package/dist/flags/project-flag.js +9 -0
  121. package/dist/flags/project-flag.js.map +1 -0
  122. package/dist/lib/start/prompt-for-install.d.ts +13 -0
  123. package/dist/lib/start/prompt-for-install.d.ts.map +1 -0
  124. package/dist/lib/start/prompt-for-install.js +12 -0
  125. package/dist/lib/start/prompt-for-install.js.map +1 -0
  126. package/dist/tui/App.d.ts.map +1 -1
  127. package/dist/tui/App.js +17 -5
  128. package/dist/tui/App.js.map +1 -1
  129. package/dist/tui/components/domain/DocDetail.d.ts.map +1 -1
  130. package/dist/tui/components/domain/DocDetail.js +20 -0
  131. package/dist/tui/components/domain/DocDetail.js.map +1 -1
  132. package/dist/tui/components/domain/DocList.d.ts.map +1 -1
  133. package/dist/tui/components/domain/DocList.js +16 -0
  134. package/dist/tui/components/domain/DocList.js.map +1 -1
  135. package/dist/tui/components/domain/IssueDetail.d.ts.map +1 -1
  136. package/dist/tui/components/domain/IssueDetail.js +14 -0
  137. package/dist/tui/components/domain/IssueDetail.js.map +1 -1
  138. package/dist/tui/components/domain/IssueList.d.ts.map +1 -1
  139. package/dist/tui/components/domain/IssueList.js +16 -0
  140. package/dist/tui/components/domain/IssueList.js.map +1 -1
  141. package/dist/tui/components/domain/PRDetail.d.ts.map +1 -1
  142. package/dist/tui/components/domain/PRDetail.js +14 -0
  143. package/dist/tui/components/domain/PRDetail.js.map +1 -1
  144. package/dist/tui/components/domain/PRList.d.ts.map +1 -1
  145. package/dist/tui/components/domain/PRList.js +16 -0
  146. package/dist/tui/components/domain/PRList.js.map +1 -1
  147. package/dist/tui/components/layout/StatusBar.d.ts +2 -1
  148. package/dist/tui/components/layout/StatusBar.d.ts.map +1 -1
  149. package/dist/tui/components/layout/StatusBar.js +2 -2
  150. package/dist/tui/components/layout/StatusBar.js.map +1 -1
  151. package/dist/tui/hooks/useClipboard.d.ts +6 -0
  152. package/dist/tui/hooks/useClipboard.d.ts.map +1 -0
  153. package/dist/tui/hooks/useClipboard.js +46 -0
  154. package/dist/tui/hooks/useClipboard.js.map +1 -0
  155. package/dist/tui/services/clipboard-service.d.ts +18 -0
  156. package/dist/tui/services/clipboard-service.d.ts.map +1 -0
  157. package/dist/tui/services/clipboard-service.js +37 -0
  158. package/dist/tui/services/clipboard-service.js.map +1 -0
  159. package/dist/tui/state/app-state.d.ts +4 -0
  160. package/dist/tui/state/app-state.d.ts.map +1 -1
  161. package/dist/tui/state/app-state.js +3 -0
  162. package/dist/tui/state/app-state.js.map +1 -1
  163. package/dist/utils/ask-yes-no.d.ts +10 -0
  164. package/dist/utils/ask-yes-no.d.ts.map +1 -0
  165. package/dist/utils/ask-yes-no.js +26 -0
  166. package/dist/utils/ask-yes-no.js.map +1 -0
  167. package/dist/utils/cross-project-search.d.ts +7 -0
  168. package/dist/utils/cross-project-search.d.ts.map +1 -0
  169. package/dist/utils/cross-project-search.js +7 -0
  170. package/dist/utils/cross-project-search.js.map +1 -0
  171. package/dist/utils/ensure-initialized.d.ts +10 -0
  172. package/dist/utils/ensure-initialized.d.ts.map +1 -0
  173. package/dist/utils/ensure-initialized.js +26 -0
  174. package/dist/utils/ensure-initialized.js.map +1 -0
  175. package/dist/utils/format-cross-project-hint.d.ts +9 -0
  176. package/dist/utils/format-cross-project-hint.d.ts.map +1 -0
  177. package/dist/utils/format-cross-project-hint.js +17 -0
  178. package/dist/utils/format-cross-project-hint.js.map +1 -0
  179. package/dist/utils/format-cross-project-json.d.ts +9 -0
  180. package/dist/utils/format-cross-project-json.d.ts.map +1 -0
  181. package/dist/utils/format-cross-project-json.js +16 -0
  182. package/dist/utils/format-cross-project-json.js.map +1 -0
  183. package/dist/utils/is-not-found-error.d.ts +5 -0
  184. package/dist/utils/is-not-found-error.d.ts.map +1 -0
  185. package/dist/utils/is-not-found-error.js +14 -0
  186. package/dist/utils/is-not-found-error.js.map +1 -0
  187. package/dist/utils/resolve-project-path.d.ts +17 -0
  188. package/dist/utils/resolve-project-path.d.ts.map +1 -0
  189. package/dist/utils/resolve-project-path.js +72 -0
  190. package/dist/utils/resolve-project-path.js.map +1 -0
  191. package/oclif.manifest.json +270 -71
  192. package/package.json +2 -1
  193. package/proto/centy.proto +294 -1
@@ -3,6 +3,7 @@ import { Command } from '@oclif/core';
3
3
  * Get a single pull request by ID or display number
4
4
  */
5
5
  export default class GetPr extends Command {
6
+ static aliases: string[];
6
7
  static args: {
7
8
  id: import("@oclif/core/interfaces").Arg<string, Record<string, unknown>>;
8
9
  };
@@ -10,6 +11,8 @@ export default class GetPr extends Command {
10
11
  static examples: string[];
11
12
  static flags: {
12
13
  json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
14
+ global: import("@oclif/core/interfaces").BooleanFlag<boolean>;
15
+ project: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
13
16
  };
14
17
  run(): Promise<void>;
15
18
  }
@@ -1 +1 @@
1
- {"version":3,"file":"pr.d.ts","sourceRoot":"","sources":["../../../src/commands/get/pr.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,OAAO,EAAS,MAAM,aAAa,CAAA;AAMlD;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,KAAM,SAAQ,OAAO;IACxC,OAAgB,IAAI;;MAKnB;IAED,OAAgB,WAAW,SAC0B;IAErD,OAAgB,QAAQ,WAIvB;IAED,OAAgB,KAAK;;MAKpB;IAEY,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAyDlC"}
1
+ {"version":3,"file":"pr.d.ts","sourceRoot":"","sources":["../../../src/commands/get/pr.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,OAAO,EAAS,MAAM,aAAa,CAAA;AAiBlD;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,KAAM,SAAQ,OAAO;IACxC,OAAgB,OAAO,WAAc;IAErC,OAAgB,IAAI;;MAKnB;IAED,OAAgB,WAAW,SAC0B;IAErD,OAAgB,QAAQ,WAOvB;IAED,OAAgB,KAAK;;;;MAWpB;IAGY,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAgKlC"}
@@ -1,11 +1,16 @@
1
1
  import { Args, Command, Flags } from '@oclif/core';
2
2
  import { daemonGetPr } from '../../daemon/daemon-get-pr.js';
3
3
  import { daemonGetPrByDisplayNumber } from '../../daemon/daemon-get-pr-by-display-number.js';
4
- import { daemonIsInitialized } from '../../daemon/daemon-is-initialized.js';
4
+ import { daemonGetPrsByUuid } from '../../daemon/daemon-get-prs-by-uuid.js';
5
+ import { projectFlag } from '../../flags/project-flag.js';
6
+ import { formatCrossProjectHint, formatCrossProjectJson, isNotFoundError, } from '../../utils/cross-project-search.js';
7
+ import { ensureInitialized, NotInitializedError, } from '../../utils/ensure-initialized.js';
8
+ import { resolveProjectPath } from '../../utils/resolve-project-path.js';
5
9
  /**
6
10
  * Get a single pull request by ID or display number
7
11
  */
8
12
  export default class GetPr extends Command {
13
+ static aliases = ['show:pr'];
9
14
  static args = {
10
15
  id: Args.string({
11
16
  description: 'PR ID (UUID) or display number',
@@ -17,59 +22,150 @@ export default class GetPr extends Command {
17
22
  '<%= config.bin %> get pr 1',
18
23
  '<%= config.bin %> get pr abc123-uuid',
19
24
  '<%= config.bin %> get pr 1 --json',
25
+ '<%= config.bin %> get pr abc12345-1234-1234-1234-123456789abc --global',
26
+ '<%= config.bin %> get pr abc12345-1234-1234-1234-123456789abc -g --json',
27
+ '<%= config.bin %> get pr 1 --project centy-daemon',
20
28
  ];
21
29
  static flags = {
22
30
  json: Flags.boolean({
23
31
  description: 'Output as JSON',
24
32
  default: false,
25
33
  }),
34
+ global: Flags.boolean({
35
+ char: 'g',
36
+ description: 'Search across all tracked projects (UUID only)',
37
+ default: false,
38
+ }),
39
+ project: projectFlag,
26
40
  };
41
+ // eslint-disable-next-line max-lines-per-function
27
42
  async run() {
28
43
  const { args, flags } = await this.parse(GetPr);
29
- const cwd = process.env['CENTY_CWD'] ?? process.cwd();
30
- const initStatus = await daemonIsInitialized({ projectPath: cwd });
31
- if (!initStatus.initialized) {
32
- this.error('.centy folder not initialized. Run "centy init" first.');
33
- }
34
- // Try to parse as display number first
35
- const displayNumber = Number.parseInt(args.id, 10);
36
- const isDisplayNumber = !Number.isNaN(displayNumber) && displayNumber > 0;
37
- const pr = isDisplayNumber
38
- ? await daemonGetPrByDisplayNumber({
39
- projectPath: cwd,
40
- displayNumber,
41
- })
42
- : await daemonGetPr({
43
- projectPath: cwd,
44
- prId: args.id,
45
- });
46
- if (flags.json) {
47
- this.log(JSON.stringify(pr, null, 2));
44
+ const cwd = await resolveProjectPath(flags.project);
45
+ // Handle global search
46
+ if (flags.global) {
47
+ // Validate UUID format for global search
48
+ const uuidRegex = /^[\da-f]{8}-[\da-f]{4}-[\da-f]{4}-[\da-f]{4}-[\da-f]{12}$/i;
49
+ if (!uuidRegex.test(args.id)) {
50
+ this.error('Global search requires a valid UUID. Display numbers are not supported for global search.');
51
+ }
52
+ const result = await daemonGetPrsByUuid({ uuid: args.id });
53
+ if (flags.json) {
54
+ this.log(JSON.stringify(result, null, 2));
55
+ return;
56
+ }
57
+ if (result.prs.length === 0) {
58
+ this.log(`No PRs found with UUID: ${args.id}`);
59
+ if (result.errors.length > 0) {
60
+ this.warn('Some projects could not be searched:');
61
+ for (const err of result.errors) {
62
+ this.warn(` - ${err}`);
63
+ }
64
+ }
65
+ return;
66
+ }
67
+ this.log(`Found ${result.totalCount} PR(s) matching UUID: ${args.id}\n`);
68
+ for (const pwp of result.prs) {
69
+ const pr = pwp.pr;
70
+ const meta = pr.metadata;
71
+ this.log(`--- Project: ${pwp.projectName} (${pwp.projectPath}) ---`);
72
+ this.log(`PR #${pr.displayNumber}`);
73
+ this.log(`ID: ${pr.id}`);
74
+ this.log(`Title: ${pr.title}`);
75
+ this.log(`Status: ${meta !== undefined ? meta.status : 'unknown'}`);
76
+ this.log(`Priority: ${meta !== undefined ? (meta.priorityLabel !== '' ? meta.priorityLabel : `P${meta.priority}`) : 'P?'}`);
77
+ this.log(`Branch: ${meta !== undefined ? `${meta.sourceBranch} -> ${meta.targetBranch}` : '? -> ?'}`);
78
+ this.log(`Created: ${meta !== undefined ? meta.createdAt : 'unknown'}`);
79
+ this.log(`Updated: ${meta !== undefined ? meta.updatedAt : 'unknown'}`);
80
+ if (pr.description) {
81
+ this.log(`\nDescription:\n${pr.description}`);
82
+ }
83
+ this.log('');
84
+ }
85
+ if (result.errors.length > 0) {
86
+ this.warn('Some projects could not be searched:');
87
+ for (const err of result.errors) {
88
+ this.warn(` - ${err}`);
89
+ }
90
+ }
48
91
  return;
49
92
  }
50
- const meta = pr.metadata;
51
- this.log(`PR #${pr.displayNumber}`);
52
- this.log(`ID: ${pr.id}`);
53
- this.log(`Title: ${pr.title}`);
54
- this.log(`Status: ${meta !== undefined ? meta.status : 'unknown'}`);
55
- this.log(`Priority: ${meta !== undefined ? (meta.priorityLabel !== '' ? meta.priorityLabel : `P${meta.priority}`) : 'P?'}`);
56
- this.log(`Branch: ${meta !== undefined ? `${meta.sourceBranch} -> ${meta.targetBranch}` : '? -> ?'}`);
57
- if (meta !== undefined && meta.linkedIssues.length > 0) {
58
- this.log(`Linked Issues: ${meta.linkedIssues.join(', ')}`);
59
- }
60
- if (meta !== undefined && meta.reviewers.length > 0) {
61
- this.log(`Reviewers: ${meta.reviewers.join(', ')}`);
93
+ // Local search
94
+ try {
95
+ await ensureInitialized(cwd);
62
96
  }
63
- this.log(`Created: ${meta !== undefined ? meta.createdAt : 'unknown'}`);
64
- this.log(`Updated: ${meta !== undefined ? meta.updatedAt : 'unknown'}`);
65
- if (meta !== undefined && meta.mergedAt !== '') {
66
- this.log(`Merged: ${meta.mergedAt}`);
97
+ catch (error) {
98
+ if (error instanceof NotInitializedError) {
99
+ this.error(error.message);
100
+ }
101
+ throw error instanceof Error ? error : new Error(String(error));
67
102
  }
68
- if (meta !== undefined && meta.closedAt !== '') {
69
- this.log(`Closed: ${meta.closedAt}`);
103
+ // Try to parse as display number first
104
+ // Only treat as display number if the entire string is digits
105
+ const isAllDigits = /^\d+$/.test(args.id);
106
+ const displayNumber = isAllDigits ? Number.parseInt(args.id, 10) : NaN;
107
+ const isDisplayNumber = isAllDigits && !Number.isNaN(displayNumber) && displayNumber > 0;
108
+ try {
109
+ const pr = isDisplayNumber
110
+ ? await daemonGetPrByDisplayNumber({
111
+ projectPath: cwd,
112
+ displayNumber,
113
+ })
114
+ : await daemonGetPr({
115
+ projectPath: cwd,
116
+ prId: args.id,
117
+ });
118
+ if (flags.json) {
119
+ this.log(JSON.stringify(pr, null, 2));
120
+ return;
121
+ }
122
+ const meta = pr.metadata;
123
+ this.log(`PR #${pr.displayNumber}`);
124
+ this.log(`ID: ${pr.id}`);
125
+ this.log(`Title: ${pr.title}`);
126
+ this.log(`Status: ${meta !== undefined ? meta.status : 'unknown'}`);
127
+ this.log(`Priority: ${meta !== undefined ? (meta.priorityLabel !== '' ? meta.priorityLabel : `P${meta.priority}`) : 'P?'}`);
128
+ this.log(`Branch: ${meta !== undefined ? `${meta.sourceBranch} -> ${meta.targetBranch}` : '? -> ?'}`);
129
+ if (meta !== undefined && meta.linkedIssues.length > 0) {
130
+ this.log(`Linked Issues: ${meta.linkedIssues.join(', ')}`);
131
+ }
132
+ if (meta !== undefined && meta.reviewers.length > 0) {
133
+ this.log(`Reviewers: ${meta.reviewers.join(', ')}`);
134
+ }
135
+ this.log(`Created: ${meta !== undefined ? meta.createdAt : 'unknown'}`);
136
+ this.log(`Updated: ${meta !== undefined ? meta.updatedAt : 'unknown'}`);
137
+ if (meta !== undefined && meta.mergedAt !== '') {
138
+ this.log(`Merged: ${meta.mergedAt}`);
139
+ }
140
+ if (meta !== undefined && meta.closedAt !== '') {
141
+ this.log(`Closed: ${meta.closedAt}`);
142
+ }
143
+ if (pr.description) {
144
+ this.log(`\nDescription:\n${pr.description}`);
145
+ }
70
146
  }
71
- if (pr.description) {
72
- this.log(`\nDescription:\n${pr.description}`);
147
+ catch (error) {
148
+ // For UUID lookups that fail, try cross-project search to provide helpful hints
149
+ if (!isDisplayNumber && isNotFoundError(error)) {
150
+ const uuidRegex = /^[\da-f]{8}-[\da-f]{4}-[\da-f]{4}-[\da-f]{4}-[\da-f]{12}$/i;
151
+ if (uuidRegex.test(args.id)) {
152
+ // Try global search to see if the PR exists in another project
153
+ const result = await daemonGetPrsByUuid({ uuid: args.id });
154
+ if (result.prs.length > 0) {
155
+ const matches = result.prs.map(pwp => ({
156
+ projectName: pwp.projectName,
157
+ projectPath: pwp.projectPath,
158
+ }));
159
+ if (flags.json) {
160
+ this.log(JSON.stringify(formatCrossProjectJson('pr', args.id, matches), null, 2));
161
+ this.exit(1);
162
+ }
163
+ this.error(formatCrossProjectHint('pr', args.id, matches));
164
+ }
165
+ }
166
+ }
167
+ // Re-throw original error if not found anywhere or not a NOT_FOUND error
168
+ throw error instanceof Error ? error : new Error(String(error));
73
169
  }
74
170
  }
75
171
  }
@@ -1 +1 @@
1
- {"version":3,"file":"pr.js","sourceRoot":"","sources":["../../../src/commands/get/pr.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pr.js","sourceRoot":"","sources":["../../../src/commands/get/pr.ts"],"names":[],"mappings":"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"}
@@ -3,6 +3,7 @@ import { Command } from '@oclif/core';
3
3
  * Get info about a specific project
4
4
  */
5
5
  export default class GetProject extends Command {
6
+ static aliases: string[];
6
7
  static args: {
7
8
  path: import("@oclif/core/interfaces").Arg<string | undefined, Record<string, unknown>>;
8
9
  };
@@ -1 +1 @@
1
- {"version":3,"file":"project.d.ts","sourceRoot":"","sources":["../../../src/commands/get/project.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,OAAO,EAAS,MAAM,aAAa,CAAA;AAIlD;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,UAAW,SAAQ,OAAO;IAC7C,OAAgB,IAAI;;MAKnB;IAED,OAAgB,WAAW,SAAsC;IAEjE,OAAgB,QAAQ,WAIvB;IAED,OAAgB,KAAK;;MAKpB;IAEY,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CA0BlC"}
1
+ {"version":3,"file":"project.d.ts","sourceRoot":"","sources":["../../../src/commands/get/project.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,OAAO,EAAS,MAAM,aAAa,CAAA;AAIlD;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,UAAW,SAAQ,OAAO;IAC7C,OAAgB,OAAO,WAAmB;IAE1C,OAAgB,IAAI;;MAKnB;IAED,OAAgB,WAAW,SAAsC;IAEjE,OAAgB,QAAQ,WAIvB;IAED,OAAgB,KAAK;;MAKpB;IAEY,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CA0BlC"}
@@ -4,6 +4,7 @@ import { daemonGetProjectInfo } from '../../daemon/daemon-get-project-info.js';
4
4
  * Get info about a specific project
5
5
  */
6
6
  export default class GetProject extends Command {
7
+ static aliases = ['show:project'];
7
8
  static args = {
8
9
  path: Args.string({
9
10
  description: 'Path to the project (defaults to current directory)',
@@ -1 +1 @@
1
- {"version":3,"file":"project.js","sourceRoot":"","sources":["../../../src/commands/get/project.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AAElD,OAAO,EAAE,oBAAoB,EAAE,MAAM,yCAAyC,CAAA;AAE9E;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,UAAW,SAAQ,OAAO;IAC7C,MAAM,CAAU,IAAI,GAAG;QACrB,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC;YAChB,WAAW,EAAE,qDAAqD;YAClE,QAAQ,EAAE,KAAK;SAChB,CAAC;KACH,CAAA;IAED,MAAM,CAAU,WAAW,GAAG,mCAAmC,CAAA;IAEjE,MAAM,CAAU,QAAQ,GAAG;QACzB,+BAA+B;QAC/B,gDAAgD;QAChD,sCAAsC;KACvC,CAAA;IAED,MAAM,CAAU,KAAK,GAAG;QACtB,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,UAAU,CAAC,CAAA;QACpD,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,OAAO,CAAC,GAAG,EAAE,CAAA;QAE1E,MAAM,QAAQ,GAAG,MAAM,oBAAoB,CAAC;YAC1C,WAAW;SACZ,CAAC,CAAA;QAEF,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;YACpB,IAAI,CAAC,KAAK,CAAC,yBAAyB,WAAW,GAAG,CAAC,CAAA;QACrD,CAAC;QAED,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;YACf,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;YACnD,OAAM;QACR,CAAC;QAED,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAA;QAChC,IAAI,CAAC,GAAG,CAAC,YAAY,OAAO,CAAC,IAAI,EAAE,CAAC,CAAA;QACpC,IAAI,CAAC,GAAG,CAAC,WAAW,OAAO,CAAC,IAAI,EAAE,CAAC,CAAA;QACnC,IAAI,CAAC,GAAG,CAAC,kBAAkB,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAA;QAChE,IAAI,CAAC,GAAG,CAAC,aAAa,OAAO,CAAC,UAAU,EAAE,CAAC,CAAA;QAC3C,IAAI,CAAC,GAAG,CAAC,WAAW,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAA;QACvC,IAAI,CAAC,GAAG,CAAC,qBAAqB,OAAO,CAAC,aAAa,EAAE,CAAC,CAAA;QACtD,IAAI,CAAC,GAAG,CAAC,oBAAoB,OAAO,CAAC,YAAY,EAAE,CAAC,CAAA;IACtD,CAAC"}
1
+ {"version":3,"file":"project.js","sourceRoot":"","sources":["../../../src/commands/get/project.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AAElD,OAAO,EAAE,oBAAoB,EAAE,MAAM,yCAAyC,CAAA;AAE9E;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,UAAW,SAAQ,OAAO;IAC7C,MAAM,CAAU,OAAO,GAAG,CAAC,cAAc,CAAC,CAAA;IAE1C,MAAM,CAAU,IAAI,GAAG;QACrB,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC;YAChB,WAAW,EAAE,qDAAqD;YAClE,QAAQ,EAAE,KAAK;SAChB,CAAC;KACH,CAAA;IAED,MAAM,CAAU,WAAW,GAAG,mCAAmC,CAAA;IAEjE,MAAM,CAAU,QAAQ,GAAG;QACzB,+BAA+B;QAC/B,gDAAgD;QAChD,sCAAsC;KACvC,CAAA;IAED,MAAM,CAAU,KAAK,GAAG;QACtB,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,UAAU,CAAC,CAAA;QACpD,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,OAAO,CAAC,GAAG,EAAE,CAAA;QAE1E,MAAM,QAAQ,GAAG,MAAM,oBAAoB,CAAC;YAC1C,WAAW;SACZ,CAAC,CAAA;QAEF,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;YACpB,IAAI,CAAC,KAAK,CAAC,yBAAyB,WAAW,GAAG,CAAC,CAAA;QACrD,CAAC;QAED,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;YACf,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;YACnD,OAAM;QACR,CAAC;QAED,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAA;QAChC,IAAI,CAAC,GAAG,CAAC,YAAY,OAAO,CAAC,IAAI,EAAE,CAAC,CAAA;QACpC,IAAI,CAAC,GAAG,CAAC,WAAW,OAAO,CAAC,IAAI,EAAE,CAAC,CAAA;QACnC,IAAI,CAAC,GAAG,CAAC,kBAAkB,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAA;QAChE,IAAI,CAAC,GAAG,CAAC,aAAa,OAAO,CAAC,UAAU,EAAE,CAAC,CAAA;QAC3C,IAAI,CAAC,GAAG,CAAC,WAAW,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAA;QACvC,IAAI,CAAC,GAAG,CAAC,qBAAqB,OAAO,CAAC,aAAa,EAAE,CAAC,CAAA;QACtD,IAAI,CAAC,GAAG,CAAC,oBAAoB,OAAO,CAAC,YAAY,EAAE,CAAC,CAAA;IACtD,CAAC"}
@@ -10,6 +10,7 @@ export default class ListAssets extends Command {
10
10
  shared: import("@oclif/core/interfaces").BooleanFlag<boolean>;
11
11
  'include-shared': import("@oclif/core/interfaces").BooleanFlag<boolean>;
12
12
  json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
13
+ project: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
13
14
  };
14
15
  run(): Promise<void>;
15
16
  }
@@ -1 +1 @@
1
- {"version":3,"file":"assets.d.ts","sourceRoot":"","sources":["../../../src/commands/list/assets.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAS,MAAM,aAAa,CAAA;AAM5C;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,UAAW,SAAQ,OAAO;IAC7C,OAAgB,WAAW,SAA8C;IAEzE,OAAgB,QAAQ,WAIvB;IAED,OAAgB,KAAK;;;;;MAkBpB;IAEY,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAuClC"}
1
+ {"version":3,"file":"assets.d.ts","sourceRoot":"","sources":["../../../src/commands/list/assets.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAS,MAAM,aAAa,CAAA;AAW5C;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,UAAW,SAAQ,OAAO;IAC7C,OAAgB,WAAW,SAA8C;IAEzE,OAAgB,QAAQ,WAKvB;IAED,OAAgB,KAAK;;;;;;MAmBpB;IAEY,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CA2ClC"}
@@ -1,7 +1,9 @@
1
1
  import { Command, Flags } from '@oclif/core';
2
- import { daemonIsInitialized } from '../../daemon/daemon-is-initialized.js';
3
2
  import { daemonListAssets } from '../../daemon/daemon-list-assets.js';
4
3
  import { daemonListSharedAssets } from '../../daemon/daemon-list-shared-assets.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';
5
7
  /**
6
8
  * List assets for an issue or shared assets
7
9
  */
@@ -11,6 +13,7 @@ export default class ListAssets extends Command {
11
13
  '<%= config.bin %> list assets --issue 1',
12
14
  '<%= config.bin %> list assets --shared',
13
15
  '<%= config.bin %> list assets --issue 1 --include-shared',
16
+ '<%= config.bin %> list assets --issue 1 --project centy-daemon',
14
17
  ];
15
18
  static flags = {
16
19
  issue: Flags.string({
@@ -30,13 +33,19 @@ export default class ListAssets extends Command {
30
33
  description: 'Output as JSON',
31
34
  default: false,
32
35
  }),
36
+ project: projectFlag,
33
37
  };
34
38
  async run() {
35
39
  const { flags } = await this.parse(ListAssets);
36
- const cwd = process.env['CENTY_CWD'] ?? process.cwd();
37
- const initStatus = await daemonIsInitialized({ projectPath: cwd });
38
- if (!initStatus.initialized) {
39
- this.error('.centy folder not initialized. Run "centy init" first.');
40
+ const cwd = await resolveProjectPath(flags.project);
41
+ try {
42
+ await ensureInitialized(cwd);
43
+ }
44
+ catch (error) {
45
+ if (error instanceof NotInitializedError) {
46
+ this.error(error.message);
47
+ }
48
+ throw error instanceof Error ? error : new Error(String(error));
40
49
  }
41
50
  if (!flags.issue && !flags.shared) {
42
51
  this.error('Either --issue or --shared must be specified.');
@@ -1 +1 @@
1
- {"version":3,"file":"assets.js","sourceRoot":"","sources":["../../../src/commands/list/assets.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"assets.js","sourceRoot":"","sources":["../../../src/commands/list/assets.ts"],"names":[],"mappings":"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"}
@@ -7,6 +7,7 @@ export default class ListDocs extends Command {
7
7
  static examples: string[];
8
8
  static flags: {
9
9
  json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
10
+ project: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
10
11
  };
11
12
  run(): Promise<void>;
12
13
  }
@@ -1 +1 @@
1
- {"version":3,"file":"docs.d.ts","sourceRoot":"","sources":["../../../src/commands/list/docs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAS,MAAM,aAAa,CAAA;AAK5C;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,QAAS,SAAQ,OAAO;IAC3C,OAAgB,WAAW,SAAiC;IAE5D,OAAgB,QAAQ,WAGvB;IAED,OAAgB,KAAK;;MAKpB;IAEY,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CA4BlC"}
1
+ {"version":3,"file":"docs.d.ts","sourceRoot":"","sources":["../../../src/commands/list/docs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAS,MAAM,aAAa,CAAA;AAU5C;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,QAAS,SAAQ,OAAO;IAC3C,OAAgB,WAAW,SAAiC;IAE5D,OAAgB,QAAQ,WAIvB;IAED,OAAgB,KAAK;;;MAMpB;IAEY,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAgClC"}
@@ -1,6 +1,8 @@
1
1
  import { Command, Flags } from '@oclif/core';
2
- import { daemonIsInitialized } from '../../daemon/daemon-is-initialized.js';
3
2
  import { daemonListDocs } from '../../daemon/daemon-list-docs.js';
3
+ import { projectFlag } from '../../flags/project-flag.js';
4
+ import { ensureInitialized, NotInitializedError, } from '../../utils/ensure-initialized.js';
5
+ import { resolveProjectPath } from '../../utils/resolve-project-path.js';
4
6
  /**
5
7
  * List all documentation files
6
8
  */
@@ -9,19 +11,26 @@ export default class ListDocs extends Command {
9
11
  static examples = [
10
12
  '<%= config.bin %> list docs',
11
13
  '<%= config.bin %> list docs --json',
14
+ '<%= config.bin %> list docs --project centy-daemon',
12
15
  ];
13
16
  static flags = {
14
17
  json: Flags.boolean({
15
18
  description: 'Output as JSON',
16
19
  default: false,
17
20
  }),
21
+ project: projectFlag,
18
22
  };
19
23
  async run() {
20
24
  const { flags } = await this.parse(ListDocs);
21
- const cwd = process.env['CENTY_CWD'] ?? process.cwd();
22
- const initStatus = await daemonIsInitialized({ projectPath: cwd });
23
- if (!initStatus.initialized) {
24
- this.error('.centy folder not initialized. Run "centy init" first.');
25
+ const cwd = await resolveProjectPath(flags.project);
26
+ try {
27
+ await ensureInitialized(cwd);
28
+ }
29
+ catch (error) {
30
+ if (error instanceof NotInitializedError) {
31
+ this.error(error.message);
32
+ }
33
+ throw error instanceof Error ? error : new Error(String(error));
25
34
  }
26
35
  const response = await daemonListDocs({
27
36
  projectPath: cwd,
@@ -1 +1 @@
1
- {"version":3,"file":"docs.js","sourceRoot":"","sources":["../../../src/commands/list/docs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AAE5C,OAAO,EAAE,mBAAmB,EAAE,MAAM,uCAAuC,CAAA;AAC3E,OAAO,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAA;AAEjE;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,QAAS,SAAQ,OAAO;IAC3C,MAAM,CAAU,WAAW,GAAG,8BAA8B,CAAA;IAE5D,MAAM,CAAU,QAAQ,GAAG;QACzB,6BAA6B;QAC7B,oCAAoC;KACrC,CAAA;IAED,MAAM,CAAU,KAAK,GAAG;QACtB,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,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA;QAC5C,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,OAAO,CAAC,GAAG,EAAE,CAAA;QAErD,MAAM,UAAU,GAAG,MAAM,mBAAmB,CAAC,EAAE,WAAW,EAAE,GAAG,EAAE,CAAC,CAAA;QAClE,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;YAC5B,IAAI,CAAC,KAAK,CAAC,wDAAwD,CAAC,CAAA;QACtE,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,cAAc,CAAC;YACpC,WAAW,EAAE,GAAG;SACjB,CAAC,CAAA;QAEF,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;YACf,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;YAChD,OAAM;QACR,CAAC;QAED,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC/B,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAA;YAC1B,OAAM;QACR,CAAC;QAED,IAAI,CAAC,GAAG,CAAC,SAAS,QAAQ,CAAC,UAAU,YAAY,CAAC,CAAA;QAClD,KAAK,MAAM,GAAG,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC;YAChC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,KAAK,EAAE,CAAC,CAAA;QACvC,CAAC;IACH,CAAC"}
1
+ {"version":3,"file":"docs.js","sourceRoot":"","sources":["../../../src/commands/list/docs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AAE5C,OAAO,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAA;AACjE,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,MAAM,CAAC,OAAO,OAAO,QAAS,SAAQ,OAAO;IAC3C,MAAM,CAAU,WAAW,GAAG,8BAA8B,CAAA;IAE5D,MAAM,CAAU,QAAQ,GAAG;QACzB,6BAA6B;QAC7B,oCAAoC;QACpC,oDAAoD;KACrD,CAAA;IAED,MAAM,CAAU,KAAK,GAAG;QACtB,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC;YAClB,WAAW,EAAE,gBAAgB;YAC7B,OAAO,EAAE,KAAK;SACf,CAAC;QACF,OAAO,EAAE,WAAW;KACrB,CAAA;IAEM,KAAK,CAAC,GAAG;QACd,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA;QAC5C,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,cAAc,CAAC;YACpC,WAAW,EAAE,GAAG;SACjB,CAAC,CAAA;QAEF,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;YACf,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;YAChD,OAAM;QACR,CAAC;QAED,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC/B,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAA;YAC1B,OAAM;QACR,CAAC;QAED,IAAI,CAAC,GAAG,CAAC,SAAS,QAAQ,CAAC,UAAU,YAAY,CAAC,CAAA;QAClD,KAAK,MAAM,GAAG,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC;YAChC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,KAAK,EAAE,CAAC,CAAA;QACvC,CAAC;IACH,CAAC"}
@@ -9,6 +9,7 @@ export default class ListIssues extends Command {
9
9
  status: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
10
10
  priority: import("@oclif/core/interfaces").OptionFlag<number | undefined, import("@oclif/core/interfaces").CustomOptions>;
11
11
  json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
12
+ project: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
12
13
  };
13
14
  run(): Promise<void>;
14
15
  }
@@ -1 +1 @@
1
- {"version":3,"file":"issues.d.ts","sourceRoot":"","sources":["../../../src/commands/list/issues.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAS,MAAM,aAAa,CAAA;AAK5C;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,UAAW,SAAQ,OAAO;IAC7C,OAAgB,WAAW,SAAoB;IAE/C,OAAgB,QAAQ,WAIvB;IAED,OAAgB,KAAK;;;;MAapB;IAEY,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAwClC"}
1
+ {"version":3,"file":"issues.d.ts","sourceRoot":"","sources":["../../../src/commands/list/issues.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAS,MAAM,aAAa,CAAA;AAU5C;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,UAAW,SAAQ,OAAO;IAC7C,OAAgB,WAAW,SAAoB;IAE/C,OAAgB,QAAQ,WAKvB;IAED,OAAgB,KAAK;;;;;MAcpB;IAEY,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CA4ClC"}
@@ -1,6 +1,8 @@
1
1
  import { Command, Flags } from '@oclif/core';
2
- import { daemonIsInitialized } from '../../daemon/daemon-is-initialized.js';
3
2
  import { daemonListIssues } from '../../daemon/daemon-list-issues.js';
3
+ import { projectFlag } from '../../flags/project-flag.js';
4
+ import { ensureInitialized, NotInitializedError, } from '../../utils/ensure-initialized.js';
5
+ import { resolveProjectPath } from '../../utils/resolve-project-path.js';
4
6
  /**
5
7
  * List all issues in the .centy/issues folder
6
8
  */
@@ -10,6 +12,7 @@ export default class ListIssues extends Command {
10
12
  '<%= config.bin %> list issues',
11
13
  '<%= config.bin %> list issues --status open',
12
14
  '<%= config.bin %> list issues --priority 1',
15
+ '<%= config.bin %> list issues --project centy-daemon',
13
16
  ];
14
17
  static flags = {
15
18
  status: Flags.string({
@@ -24,13 +27,19 @@ export default class ListIssues extends Command {
24
27
  description: 'Output as JSON',
25
28
  default: false,
26
29
  }),
30
+ project: projectFlag,
27
31
  };
28
32
  async run() {
29
33
  const { flags } = await this.parse(ListIssues);
30
- const cwd = process.env['CENTY_CWD'] ?? process.cwd();
31
- const initStatus = await daemonIsInitialized({ projectPath: cwd });
32
- if (!initStatus.initialized) {
33
- this.error('.centy folder not initialized. Run "centy init" first.');
34
+ const cwd = await resolveProjectPath(flags.project);
35
+ try {
36
+ await ensureInitialized(cwd);
37
+ }
38
+ catch (error) {
39
+ if (error instanceof NotInitializedError) {
40
+ this.error(error.message);
41
+ }
42
+ throw error instanceof Error ? error : new Error(String(error));
34
43
  }
35
44
  const response = await daemonListIssues({
36
45
  projectPath: cwd,
@@ -1 +1 @@
1
- {"version":3,"file":"issues.js","sourceRoot":"","sources":["../../../src/commands/list/issues.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AAE5C,OAAO,EAAE,mBAAmB,EAAE,MAAM,uCAAuC,CAAA;AAC3E,OAAO,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAA;AAErE;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,UAAW,SAAQ,OAAO;IAC7C,MAAM,CAAU,WAAW,GAAG,iBAAiB,CAAA;IAE/C,MAAM,CAAU,QAAQ,GAAG;QACzB,+BAA+B;QAC/B,6CAA6C;QAC7C,4CAA4C;KAC7C,CAAA;IAED,MAAM,CAAU,KAAK,GAAG;QACtB,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC;YACnB,IAAI,EAAE,GAAG;YACT,WAAW,EAAE,oDAAoD;SAClE,CAAC;QACF,QAAQ,EAAE,KAAK,CAAC,OAAO,CAAC;YACtB,IAAI,EAAE,GAAG;YACT,WAAW,EAAE,wCAAwC;SACtD,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,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAA;QAC9C,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,OAAO,CAAC,GAAG,EAAE,CAAA;QAErD,MAAM,UAAU,GAAG,MAAM,mBAAmB,CAAC,EAAE,WAAW,EAAE,GAAG,EAAE,CAAC,CAAA;QAClE,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;YAC5B,IAAI,CAAC,KAAK,CAAC,wDAAwD,CAAC,CAAA;QACtE,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,gBAAgB,CAAC;YACtC,WAAW,EAAE,GAAG;YAChB,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,QAAQ,EAAE,KAAK,CAAC,QAAQ;SACzB,CAAC,CAAA;QAEF,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;YACf,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;YAClD,OAAM;QACR,CAAC;QAED,IAAI,QAAQ,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACjC,IAAI,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAA;YAC5B,OAAM;QACR,CAAC;QAED,IAAI,CAAC,GAAG,CAAC,SAAS,QAAQ,CAAC,UAAU,cAAc,CAAC,CAAA;QACpD,KAAK,MAAM,KAAK,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC;YACpC,MAAM,IAAI,GAAG,KAAK,CAAC,QAAQ,CAAA;YAC3B,MAAM,QAAQ,GACZ,IAAI,KAAK,SAAS;gBAChB,CAAC,CAAC,IAAI,CAAC,aAAa,KAAK,EAAE;oBACzB,CAAC,CAAC,IAAI,CAAC,aAAa;oBACpB,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE;gBACvB,CAAC,CAAC,IAAI,CAAA;YACV,MAAM,MAAM,GAAG,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAA;YAC3D,IAAI,CAAC,GAAG,CACN,IAAI,KAAK,CAAC,aAAa,KAAK,QAAQ,MAAM,MAAM,KAAK,KAAK,CAAC,KAAK,EAAE,CACnE,CAAA;QACH,CAAC;IACH,CAAC"}
1
+ {"version":3,"file":"issues.js","sourceRoot":"","sources":["../../../src/commands/list/issues.ts"],"names":[],"mappings":"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"}
@@ -11,6 +11,7 @@ export default class ListPrs extends Command {
11
11
  target: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
12
12
  priority: import("@oclif/core/interfaces").OptionFlag<number | undefined, import("@oclif/core/interfaces").CustomOptions>;
13
13
  json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
14
+ project: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
14
15
  };
15
16
  run(): Promise<void>;
16
17
  }
@@ -1 +1 @@
1
- {"version":3,"file":"prs.d.ts","sourceRoot":"","sources":["../../../src/commands/list/prs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAS,MAAM,aAAa,CAAA;AAK5C;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,OAAQ,SAAQ,OAAO;IAC1C,OAAgB,WAAW,SAA2B;IAEtD,OAAgB,QAAQ,WAKvB;IAED,OAAgB,KAAK;;;;;;MAmBpB;IAEY,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CA6ClC"}
1
+ {"version":3,"file":"prs.d.ts","sourceRoot":"","sources":["../../../src/commands/list/prs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAS,MAAM,aAAa,CAAA;AAU5C;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,OAAQ,SAAQ,OAAO;IAC1C,OAAgB,WAAW,SAA2B;IAEtD,OAAgB,QAAQ,WAMvB;IAED,OAAgB,KAAK;;;;;;;MAoBpB;IAEY,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAiDlC"}
@@ -1,6 +1,8 @@
1
1
  import { Command, Flags } from '@oclif/core';
2
- import { daemonIsInitialized } from '../../daemon/daemon-is-initialized.js';
3
2
  import { daemonListPrs } from '../../daemon/daemon-list-prs.js';
3
+ import { projectFlag } from '../../flags/project-flag.js';
4
+ import { ensureInitialized, NotInitializedError, } from '../../utils/ensure-initialized.js';
5
+ import { resolveProjectPath } from '../../utils/resolve-project-path.js';
4
6
  /**
5
7
  * List all pull requests in the .centy/prs folder
6
8
  */
@@ -11,6 +13,7 @@ export default class ListPrs extends Command {
11
13
  '<%= config.bin %> list prs --status open',
12
14
  '<%= config.bin %> list prs --source feature-branch',
13
15
  '<%= config.bin %> list prs --target main',
16
+ '<%= config.bin %> list prs --project centy-daemon',
14
17
  ];
15
18
  static flags = {
16
19
  status: Flags.string({
@@ -31,13 +34,19 @@ export default class ListPrs extends Command {
31
34
  description: 'Output as JSON',
32
35
  default: false,
33
36
  }),
37
+ project: projectFlag,
34
38
  };
35
39
  async run() {
36
40
  const { flags } = await this.parse(ListPrs);
37
- const cwd = process.env['CENTY_CWD'] ?? process.cwd();
38
- const initStatus = await daemonIsInitialized({ projectPath: cwd });
39
- if (!initStatus.initialized) {
40
- this.error('.centy folder not initialized. Run "centy init" first.');
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));
41
50
  }
42
51
  const response = await daemonListPrs({
43
52
  projectPath: cwd,
@@ -1 +1 @@
1
- {"version":3,"file":"prs.js","sourceRoot":"","sources":["../../../src/commands/list/prs.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"prs.js","sourceRoot":"","sources":["../../../src/commands/list/prs.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../../src/commands/manifest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAS,MAAM,aAAa,CAAA;AAK5C;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,QAAS,SAAQ,OAAO;IAC3C,OAAgB,WAAW,SAA6B;IAExD,OAAgB,QAAQ,WAGvB;IAED,OAAgB,KAAK;;MAKpB;IAEY,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAwBlC"}
1
+ {"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../../src/commands/manifest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAS,MAAM,aAAa,CAAA;AAQ5C;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,QAAS,SAAQ,OAAO;IAC3C,OAAgB,WAAW,SAA6B;IAExD,OAAgB,QAAQ,WAGvB;IAED,OAAgB,KAAK;;MAKpB;IAEY,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CA4BlC"}
@@ -1,6 +1,6 @@
1
1
  import { Command, Flags } from '@oclif/core';
2
2
  import { daemonGetManifest } from '../daemon/daemon-get-manifest.js';
3
- import { daemonIsInitialized } from '../daemon/daemon-is-initialized.js';
3
+ import { ensureInitialized, NotInitializedError, } from '../utils/ensure-initialized.js';
4
4
  /**
5
5
  * Get the project manifest
6
6
  */
@@ -19,9 +19,14 @@ export default class Manifest extends Command {
19
19
  async run() {
20
20
  const { flags } = await this.parse(Manifest);
21
21
  const cwd = process.env['CENTY_CWD'] ?? process.cwd();
22
- const initStatus = await daemonIsInitialized({ projectPath: cwd });
23
- if (!initStatus.initialized) {
24
- this.error('.centy folder not initialized. Run "centy init" first.');
22
+ try {
23
+ await ensureInitialized(cwd);
24
+ }
25
+ catch (error) {
26
+ if (error instanceof NotInitializedError) {
27
+ this.error(error.message);
28
+ }
29
+ throw error instanceof Error ? error : new Error(String(error));
25
30
  }
26
31
  const manifest = await daemonGetManifest({
27
32
  projectPath: cwd,