centy 0.0.18 → 0.0.19
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.
- package/dist/commands/add/asset.d.ts +2 -1
- package/dist/commands/add/asset.d.ts.map +1 -1
- package/dist/commands/add/asset.js +14 -5
- package/dist/commands/add/asset.js.map +1 -1
- package/dist/commands/create/pr.d.ts +3 -3
- package/dist/commands/create/pr.d.ts.map +1 -1
- package/dist/commands/create/pr.js +11 -33
- package/dist/commands/create/pr.js.map +1 -1
- package/dist/daemon/types.d.ts +1 -0
- package/dist/daemon/types.d.ts.map +1 -1
- package/dist/lib/create-pr/create-pr.d.ts +8 -0
- package/dist/lib/create-pr/create-pr.d.ts.map +1 -0
- package/dist/lib/create-pr/create-pr.js +111 -0
- package/dist/lib/create-pr/create-pr.js.map +1 -0
- package/dist/lib/create-pr/gather-basic-fields.d.ts +8 -0
- package/dist/lib/create-pr/gather-basic-fields.d.ts.map +1 -0
- package/dist/lib/create-pr/gather-basic-fields.js +34 -0
- package/dist/lib/create-pr/gather-basic-fields.js.map +1 -0
- package/dist/lib/create-pr/gather-metadata-fields.d.ts +11 -0
- package/dist/lib/create-pr/gather-metadata-fields.d.ts.map +1 -0
- package/dist/lib/create-pr/gather-metadata-fields.js +34 -0
- package/dist/lib/create-pr/gather-metadata-fields.js.map +1 -0
- package/dist/lib/create-pr/gather-pr-input.d.ts +8 -0
- package/dist/lib/create-pr/gather-pr-input.d.ts.map +1 -0
- package/dist/lib/create-pr/gather-pr-input.js +33 -0
- package/dist/lib/create-pr/gather-pr-input.js.map +1 -0
- package/dist/lib/create-pr/index.d.ts +2 -0
- package/dist/lib/create-pr/index.d.ts.map +1 -0
- package/dist/lib/create-pr/index.js +2 -0
- package/dist/lib/create-pr/index.js.map +1 -0
- package/dist/lib/create-pr/prompt-for-description.d.ts +6 -0
- package/dist/lib/create-pr/prompt-for-description.d.ts.map +1 -0
- package/dist/lib/create-pr/prompt-for-description.js +12 -0
- package/dist/lib/create-pr/prompt-for-description.js.map +1 -0
- package/dist/lib/create-pr/prompt-for-linked-issues.d.ts +7 -0
- package/dist/lib/create-pr/prompt-for-linked-issues.d.ts.map +1 -0
- package/dist/lib/create-pr/prompt-for-linked-issues.js +22 -0
- package/dist/lib/create-pr/prompt-for-linked-issues.js.map +1 -0
- package/dist/lib/create-pr/prompt-for-priority.d.ts +9 -0
- package/dist/lib/create-pr/prompt-for-priority.d.ts.map +1 -0
- package/dist/lib/create-pr/prompt-for-priority.js +25 -0
- package/dist/lib/create-pr/prompt-for-priority.js.map +1 -0
- package/dist/lib/create-pr/prompt-for-reviewers.d.ts +7 -0
- package/dist/lib/create-pr/prompt-for-reviewers.d.ts.map +1 -0
- package/dist/lib/create-pr/prompt-for-reviewers.js +22 -0
- package/dist/lib/create-pr/prompt-for-reviewers.js.map +1 -0
- package/dist/lib/create-pr/prompt-for-source-branch.d.ts +7 -0
- package/dist/lib/create-pr/prompt-for-source-branch.d.ts.map +1 -0
- package/dist/lib/create-pr/prompt-for-source-branch.js +20 -0
- package/dist/lib/create-pr/prompt-for-source-branch.js.map +1 -0
- package/dist/lib/create-pr/prompt-for-status.d.ts +9 -0
- package/dist/lib/create-pr/prompt-for-status.d.ts.map +1 -0
- package/dist/lib/create-pr/prompt-for-status.js +25 -0
- package/dist/lib/create-pr/prompt-for-status.js.map +1 -0
- package/dist/lib/create-pr/prompt-for-target-branch.d.ts +7 -0
- package/dist/lib/create-pr/prompt-for-target-branch.d.ts.map +1 -0
- package/dist/lib/create-pr/prompt-for-target-branch.js +15 -0
- package/dist/lib/create-pr/prompt-for-target-branch.js.map +1 -0
- package/dist/lib/create-pr/prompt-for-title.d.ts +6 -0
- package/dist/lib/create-pr/prompt-for-title.d.ts.map +1 -0
- package/dist/lib/create-pr/prompt-for-title.js +12 -0
- package/dist/lib/create-pr/prompt-for-title.js.map +1 -0
- package/dist/lib/create-pr/types.d.ts +14 -0
- package/dist/lib/create-pr/types.d.ts.map +1 -0
- package/dist/lib/create-pr/types.js +2 -0
- package/dist/lib/create-pr/types.js.map +1 -0
- package/dist/tui/App.d.ts.map +1 -1
- package/dist/tui/App.js +30 -0
- package/dist/tui/App.js.map +1 -1
- package/dist/tui/components/domain/PRCreate.d.ts +2 -0
- package/dist/tui/components/domain/PRCreate.d.ts.map +1 -0
- package/dist/tui/components/domain/PRCreate.js +195 -0
- package/dist/tui/components/domain/PRCreate.js.map +1 -0
- package/dist/tui/components/domain/PRDetail.d.ts +2 -0
- package/dist/tui/components/domain/PRDetail.d.ts.map +1 -0
- package/dist/tui/components/domain/PRDetail.js +119 -0
- package/dist/tui/components/domain/PRDetail.js.map +1 -0
- package/dist/tui/components/domain/PREdit.d.ts +2 -0
- package/dist/tui/components/domain/PREdit.d.ts.map +1 -0
- package/dist/tui/components/domain/PREdit.js +259 -0
- package/dist/tui/components/domain/PREdit.js.map +1 -0
- package/dist/tui/components/domain/PRList.d.ts +2 -0
- package/dist/tui/components/domain/PRList.d.ts.map +1 -0
- package/dist/tui/components/domain/PRList.js +178 -0
- package/dist/tui/components/domain/PRList.js.map +1 -0
- package/dist/tui/hooks/usePullRequests.d.ts +8 -0
- package/dist/tui/hooks/usePullRequests.d.ts.map +1 -0
- package/dist/tui/hooks/usePullRequests.js +36 -0
- package/dist/tui/hooks/usePullRequests.js.map +1 -0
- package/dist/tui/index.d.ts.map +1 -1
- package/dist/tui/index.js +5 -3
- package/dist/tui/index.js.map +1 -1
- package/dist/tui/services/daemon-service.d.ts +29 -1
- package/dist/tui/services/daemon-service.d.ts.map +1 -1
- package/dist/tui/services/daemon-service.js +87 -0
- package/dist/tui/services/daemon-service.js.map +1 -1
- package/dist/tui/state/app-state.d.ts +22 -2
- package/dist/tui/state/app-state.d.ts.map +1 -1
- package/dist/tui/state/app-state.js +23 -1
- package/dist/tui/state/app-state.js.map +1 -1
- package/dist/tui/types/views.d.ts +2 -1
- package/dist/tui/types/views.d.ts.map +1 -1
- package/dist/tui/types/views.js +6 -0
- package/dist/tui/types/views.js.map +1 -1
- package/dist/tui/utils/local-config.d.ts +4 -1
- package/dist/tui/utils/local-config.d.ts.map +1 -1
- package/dist/tui/utils/local-config.js +10 -1
- package/dist/tui/utils/local-config.js.map +1 -1
- package/dist/types/create-pr-options.d.ts +30 -0
- package/dist/types/create-pr-options.d.ts.map +1 -0
- package/dist/types/create-pr-options.js +2 -0
- package/dist/types/create-pr-options.js.map +1 -0
- package/dist/types/create-pr-result.d.ts +16 -0
- package/dist/types/create-pr-result.d.ts.map +1 -0
- package/dist/types/create-pr-result.js +2 -0
- package/dist/types/create-pr-result.js.map +1 -0
- package/oclif.manifest.json +183 -176
- package/package.json +1 -1
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Prompt user for PR description (optional)
|
|
3
|
+
*/
|
|
4
|
+
export function promptForDescription(rl, output) {
|
|
5
|
+
return new Promise(resolve => {
|
|
6
|
+
output.write('Enter PR description (optional, press Enter to skip): ');
|
|
7
|
+
rl.question('', answer => {
|
|
8
|
+
resolve(answer.trim());
|
|
9
|
+
});
|
|
10
|
+
});
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=prompt-for-description.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prompt-for-description.js","sourceRoot":"","sources":["../../../src/lib/create-pr/prompt-for-description.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAClC,EAAa,EACb,MAA6B;IAE7B,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE;QAC3B,MAAM,CAAC,KAAK,CAAC,wDAAwD,CAAC,CAAA;QACtE,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC,EAAE;YACvB,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAA;QACxB,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;AACJ,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { Interface } from 'node:readline';
|
|
2
|
+
/**
|
|
3
|
+
* Prompt user for linked issue numbers
|
|
4
|
+
* Returns comma-separated issue IDs as an array
|
|
5
|
+
*/
|
|
6
|
+
export declare function promptForLinkedIssues(rl: Interface, output: NodeJS.WritableStream): Promise<string[]>;
|
|
7
|
+
//# sourceMappingURL=prompt-for-linked-issues.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prompt-for-linked-issues.d.ts","sourceRoot":"","sources":["../../../src/lib/create-pr/prompt-for-linked-issues.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AAE9C;;;GAGG;AACH,wBAAgB,qBAAqB,CACnC,EAAE,EAAE,SAAS,EACb,MAAM,EAAE,MAAM,CAAC,cAAc,GAC5B,OAAO,CAAC,MAAM,EAAE,CAAC,CAgBnB"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Prompt user for linked issue numbers
|
|
3
|
+
* Returns comma-separated issue IDs as an array
|
|
4
|
+
*/
|
|
5
|
+
export function promptForLinkedIssues(rl, output) {
|
|
6
|
+
return new Promise(resolve => {
|
|
7
|
+
output.write('Enter linked issue numbers (comma-separated, optional): ');
|
|
8
|
+
rl.question('', answer => {
|
|
9
|
+
const trimmed = answer.trim();
|
|
10
|
+
if (trimmed === '') {
|
|
11
|
+
resolve([]);
|
|
12
|
+
return;
|
|
13
|
+
}
|
|
14
|
+
const issues = trimmed
|
|
15
|
+
.split(',')
|
|
16
|
+
.map(s => s.trim())
|
|
17
|
+
.filter(s => s !== '');
|
|
18
|
+
resolve(issues);
|
|
19
|
+
});
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=prompt-for-linked-issues.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prompt-for-linked-issues.js","sourceRoot":"","sources":["../../../src/lib/create-pr/prompt-for-linked-issues.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,MAAM,UAAU,qBAAqB,CACnC,EAAa,EACb,MAA6B;IAE7B,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE;QAC3B,MAAM,CAAC,KAAK,CAAC,0DAA0D,CAAC,CAAA;QACxE,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC,EAAE;YACvB,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,EAAE,CAAA;YAC7B,IAAI,OAAO,KAAK,EAAE,EAAE,CAAC;gBACnB,OAAO,CAAC,EAAE,CAAC,CAAA;gBACX,OAAM;YACR,CAAC;YACD,MAAM,MAAM,GAAG,OAAO;iBACnB,KAAK,CAAC,GAAG,CAAC;iBACV,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;iBAClB,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAA;YACxB,OAAO,CAAC,MAAM,CAAC,CAAA;QACjB,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;AACJ,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { Interface } from 'node:readline';
|
|
2
|
+
type Priority = 'low' | 'medium' | 'high';
|
|
3
|
+
/**
|
|
4
|
+
* Prompt user for PR priority
|
|
5
|
+
* Shows options and validates input
|
|
6
|
+
*/
|
|
7
|
+
export declare function promptForPriority(rl: Interface, output: NodeJS.WritableStream): Promise<Priority>;
|
|
8
|
+
export {};
|
|
9
|
+
//# sourceMappingURL=prompt-for-priority.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prompt-for-priority.d.ts","sourceRoot":"","sources":["../../../src/lib/create-pr/prompt-for-priority.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AAE9C,KAAK,QAAQ,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAA;AAIzC;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,EAAE,EAAE,SAAS,EACb,MAAM,EAAE,MAAM,CAAC,cAAc,GAC5B,OAAO,CAAC,QAAQ,CAAC,CAkBnB"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
const PRIORITY_OPTIONS = ['low', 'medium', 'high'];
|
|
2
|
+
/**
|
|
3
|
+
* Prompt user for PR priority
|
|
4
|
+
* Shows options and validates input
|
|
5
|
+
*/
|
|
6
|
+
export function promptForPriority(rl, output) {
|
|
7
|
+
return new Promise(resolve => {
|
|
8
|
+
output.write('Select priority (low/medium/high) [medium]: ');
|
|
9
|
+
rl.question('', answer => {
|
|
10
|
+
const trimmed = answer.trim().toLowerCase();
|
|
11
|
+
if (trimmed === '') {
|
|
12
|
+
resolve('medium');
|
|
13
|
+
return;
|
|
14
|
+
}
|
|
15
|
+
if (PRIORITY_OPTIONS.includes(trimmed)) {
|
|
16
|
+
resolve(trimmed);
|
|
17
|
+
return;
|
|
18
|
+
}
|
|
19
|
+
// Invalid input, prompt again
|
|
20
|
+
output.write(`Invalid priority "${answer}". `);
|
|
21
|
+
resolve(promptForPriority(rl, output));
|
|
22
|
+
});
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=prompt-for-priority.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prompt-for-priority.js","sourceRoot":"","sources":["../../../src/lib/create-pr/prompt-for-priority.ts"],"names":[],"mappings":"AAIA,MAAM,gBAAgB,GAAwB,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,CAAU,CAAA;AAEhF;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAC/B,EAAa,EACb,MAA6B;IAE7B,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE;QAC3B,MAAM,CAAC,KAAK,CAAC,8CAA8C,CAAC,CAAA;QAC5D,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC,EAAE;YACvB,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAA;YAC3C,IAAI,OAAO,KAAK,EAAE,EAAE,CAAC;gBACnB,OAAO,CAAC,QAAQ,CAAC,CAAA;gBACjB,OAAM;YACR,CAAC;YACD,IAAI,gBAAgB,CAAC,QAAQ,CAAC,OAAmB,CAAC,EAAE,CAAC;gBACnD,OAAO,CAAC,OAAmB,CAAC,CAAA;gBAC5B,OAAM;YACR,CAAC;YACD,8BAA8B;YAC9B,MAAM,CAAC,KAAK,CAAC,qBAAqB,MAAM,KAAK,CAAC,CAAA;YAC9C,OAAO,CAAC,iBAAiB,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,CAAA;QACxC,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;AACJ,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { Interface } from 'node:readline';
|
|
2
|
+
/**
|
|
3
|
+
* Prompt user for reviewers
|
|
4
|
+
* Returns comma-separated reviewer names as an array
|
|
5
|
+
*/
|
|
6
|
+
export declare function promptForReviewers(rl: Interface, output: NodeJS.WritableStream): Promise<string[]>;
|
|
7
|
+
//# sourceMappingURL=prompt-for-reviewers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prompt-for-reviewers.d.ts","sourceRoot":"","sources":["../../../src/lib/create-pr/prompt-for-reviewers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AAE9C;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,EAAE,EAAE,SAAS,EACb,MAAM,EAAE,MAAM,CAAC,cAAc,GAC5B,OAAO,CAAC,MAAM,EAAE,CAAC,CAgBnB"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Prompt user for reviewers
|
|
3
|
+
* Returns comma-separated reviewer names as an array
|
|
4
|
+
*/
|
|
5
|
+
export function promptForReviewers(rl, output) {
|
|
6
|
+
return new Promise(resolve => {
|
|
7
|
+
output.write('Enter reviewers (comma-separated, optional): ');
|
|
8
|
+
rl.question('', answer => {
|
|
9
|
+
const trimmed = answer.trim();
|
|
10
|
+
if (trimmed === '') {
|
|
11
|
+
resolve([]);
|
|
12
|
+
return;
|
|
13
|
+
}
|
|
14
|
+
const reviewers = trimmed
|
|
15
|
+
.split(',')
|
|
16
|
+
.map(s => s.trim())
|
|
17
|
+
.filter(s => s !== '');
|
|
18
|
+
resolve(reviewers);
|
|
19
|
+
});
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=prompt-for-reviewers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prompt-for-reviewers.js","sourceRoot":"","sources":["../../../src/lib/create-pr/prompt-for-reviewers.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAChC,EAAa,EACb,MAA6B;IAE7B,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE;QAC3B,MAAM,CAAC,KAAK,CAAC,+CAA+C,CAAC,CAAA;QAC7D,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC,EAAE;YACvB,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,EAAE,CAAA;YAC7B,IAAI,OAAO,KAAK,EAAE,EAAE,CAAC;gBACnB,OAAO,CAAC,EAAE,CAAC,CAAA;gBACX,OAAM;YACR,CAAC;YACD,MAAM,SAAS,GAAG,OAAO;iBACtB,KAAK,CAAC,GAAG,CAAC;iBACV,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;iBAClB,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAA;YACxB,OAAO,CAAC,SAAS,CAAC,CAAA;QACpB,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;AACJ,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { Interface } from 'node:readline';
|
|
2
|
+
/**
|
|
3
|
+
* Prompt user for source branch
|
|
4
|
+
* Shows the auto-detected branch as default
|
|
5
|
+
*/
|
|
6
|
+
export declare function promptForSourceBranch(rl: Interface, output: NodeJS.WritableStream, detectedBranch?: string): Promise<string>;
|
|
7
|
+
//# sourceMappingURL=prompt-for-source-branch.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prompt-for-source-branch.d.ts","sourceRoot":"","sources":["../../../src/lib/create-pr/prompt-for-source-branch.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AAE9C;;;GAGG;AACH,wBAAgB,qBAAqB,CACnC,EAAE,EAAE,SAAS,EACb,MAAM,EAAE,MAAM,CAAC,cAAc,EAC7B,cAAc,CAAC,EAAE,MAAM,GACtB,OAAO,CAAC,MAAM,CAAC,CAajB"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Prompt user for source branch
|
|
3
|
+
* Shows the auto-detected branch as default
|
|
4
|
+
*/
|
|
5
|
+
export function promptForSourceBranch(rl, output, detectedBranch) {
|
|
6
|
+
return new Promise(resolve => {
|
|
7
|
+
const defaultHint = detectedBranch ? ` [${detectedBranch}]` : '';
|
|
8
|
+
output.write(`Enter source branch${defaultHint}: `);
|
|
9
|
+
rl.question('', answer => {
|
|
10
|
+
const trimmed = answer.trim();
|
|
11
|
+
if (trimmed === '' && detectedBranch) {
|
|
12
|
+
resolve(detectedBranch);
|
|
13
|
+
}
|
|
14
|
+
else {
|
|
15
|
+
resolve(trimmed);
|
|
16
|
+
}
|
|
17
|
+
});
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=prompt-for-source-branch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prompt-for-source-branch.js","sourceRoot":"","sources":["../../../src/lib/create-pr/prompt-for-source-branch.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,MAAM,UAAU,qBAAqB,CACnC,EAAa,EACb,MAA6B,EAC7B,cAAuB;IAEvB,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE;QAC3B,MAAM,WAAW,GAAG,cAAc,CAAC,CAAC,CAAC,KAAK,cAAc,GAAG,CAAC,CAAC,CAAC,EAAE,CAAA;QAChE,MAAM,CAAC,KAAK,CAAC,sBAAsB,WAAW,IAAI,CAAC,CAAA;QACnD,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC,EAAE;YACvB,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,EAAE,CAAA;YAC7B,IAAI,OAAO,KAAK,EAAE,IAAI,cAAc,EAAE,CAAC;gBACrC,OAAO,CAAC,cAAc,CAAC,CAAA;YACzB,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,OAAO,CAAC,CAAA;YAClB,CAAC;QACH,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;AACJ,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { Interface } from 'node:readline';
|
|
2
|
+
type Status = 'draft' | 'open';
|
|
3
|
+
/**
|
|
4
|
+
* Prompt user for PR status
|
|
5
|
+
* Shows options and validates input
|
|
6
|
+
*/
|
|
7
|
+
export declare function promptForStatus(rl: Interface, output: NodeJS.WritableStream): Promise<Status>;
|
|
8
|
+
export {};
|
|
9
|
+
//# sourceMappingURL=prompt-for-status.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prompt-for-status.d.ts","sourceRoot":"","sources":["../../../src/lib/create-pr/prompt-for-status.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AAE9C,KAAK,MAAM,GAAG,OAAO,GAAG,MAAM,CAAA;AAI9B;;;GAGG;AACH,wBAAgB,eAAe,CAC7B,EAAE,EAAE,SAAS,EACb,MAAM,EAAE,MAAM,CAAC,cAAc,GAC5B,OAAO,CAAC,MAAM,CAAC,CAkBjB"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
const STATUS_OPTIONS = ['draft', 'open'];
|
|
2
|
+
/**
|
|
3
|
+
* Prompt user for PR status
|
|
4
|
+
* Shows options and validates input
|
|
5
|
+
*/
|
|
6
|
+
export function promptForStatus(rl, output) {
|
|
7
|
+
return new Promise(resolve => {
|
|
8
|
+
output.write('Select status (draft/open) [draft]: ');
|
|
9
|
+
rl.question('', answer => {
|
|
10
|
+
const trimmed = answer.trim().toLowerCase();
|
|
11
|
+
if (trimmed === '') {
|
|
12
|
+
resolve('draft');
|
|
13
|
+
return;
|
|
14
|
+
}
|
|
15
|
+
if (STATUS_OPTIONS.includes(trimmed)) {
|
|
16
|
+
resolve(trimmed);
|
|
17
|
+
return;
|
|
18
|
+
}
|
|
19
|
+
// Invalid input, prompt again
|
|
20
|
+
output.write(`Invalid status "${answer}". `);
|
|
21
|
+
resolve(promptForStatus(rl, output));
|
|
22
|
+
});
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=prompt-for-status.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prompt-for-status.js","sourceRoot":"","sources":["../../../src/lib/create-pr/prompt-for-status.ts"],"names":[],"mappings":"AAIA,MAAM,cAAc,GAAsB,CAAC,OAAO,EAAE,MAAM,CAAU,CAAA;AAEpE;;;GAGG;AACH,MAAM,UAAU,eAAe,CAC7B,EAAa,EACb,MAA6B;IAE7B,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE;QAC3B,MAAM,CAAC,KAAK,CAAC,sCAAsC,CAAC,CAAA;QACpD,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC,EAAE;YACvB,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAA;YAC3C,IAAI,OAAO,KAAK,EAAE,EAAE,CAAC;gBACnB,OAAO,CAAC,OAAO,CAAC,CAAA;gBAChB,OAAM;YACR,CAAC;YACD,IAAI,cAAc,CAAC,QAAQ,CAAC,OAAiB,CAAC,EAAE,CAAC;gBAC/C,OAAO,CAAC,OAAiB,CAAC,CAAA;gBAC1B,OAAM;YACR,CAAC;YACD,8BAA8B;YAC9B,MAAM,CAAC,KAAK,CAAC,mBAAmB,MAAM,KAAK,CAAC,CAAA;YAC5C,OAAO,CAAC,eAAe,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,CAAA;QACtC,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;AACJ,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { Interface } from 'node:readline';
|
|
2
|
+
/**
|
|
3
|
+
* Prompt user for target branch
|
|
4
|
+
* Defaults to 'main'
|
|
5
|
+
*/
|
|
6
|
+
export declare function promptForTargetBranch(rl: Interface, output: NodeJS.WritableStream): Promise<string>;
|
|
7
|
+
//# sourceMappingURL=prompt-for-target-branch.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prompt-for-target-branch.d.ts","sourceRoot":"","sources":["../../../src/lib/create-pr/prompt-for-target-branch.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AAI9C;;;GAGG;AACH,wBAAgB,qBAAqB,CACnC,EAAE,EAAE,SAAS,EACb,MAAM,EAAE,MAAM,CAAC,cAAc,GAC5B,OAAO,CAAC,MAAM,CAAC,CAQjB"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
const DEFAULT_TARGET = 'main';
|
|
2
|
+
/**
|
|
3
|
+
* Prompt user for target branch
|
|
4
|
+
* Defaults to 'main'
|
|
5
|
+
*/
|
|
6
|
+
export function promptForTargetBranch(rl, output) {
|
|
7
|
+
return new Promise(resolve => {
|
|
8
|
+
output.write(`Enter target branch [${DEFAULT_TARGET}]: `);
|
|
9
|
+
rl.question('', answer => {
|
|
10
|
+
const trimmed = answer.trim();
|
|
11
|
+
resolve(trimmed === '' ? DEFAULT_TARGET : trimmed);
|
|
12
|
+
});
|
|
13
|
+
});
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=prompt-for-target-branch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prompt-for-target-branch.js","sourceRoot":"","sources":["../../../src/lib/create-pr/prompt-for-target-branch.ts"],"names":[],"mappings":"AAEA,MAAM,cAAc,GAAG,MAAM,CAAA;AAE7B;;;GAGG;AACH,MAAM,UAAU,qBAAqB,CACnC,EAAa,EACb,MAA6B;IAE7B,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE;QAC3B,MAAM,CAAC,KAAK,CAAC,wBAAwB,cAAc,KAAK,CAAC,CAAA;QACzD,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC,EAAE;YACvB,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,EAAE,CAAA;YAC7B,OAAO,CAAC,OAAO,KAAK,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,OAAO,CAAC,CAAA;QACpD,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prompt-for-title.d.ts","sourceRoot":"","sources":["../../../src/lib/create-pr/prompt-for-title.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AAE9C;;GAEG;AACH,wBAAgB,cAAc,CAC5B,EAAE,EAAE,SAAS,EACb,MAAM,EAAE,MAAM,CAAC,cAAc,GAC5B,OAAO,CAAC,MAAM,CAAC,CAOjB"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Prompt user for PR title
|
|
3
|
+
*/
|
|
4
|
+
export function promptForTitle(rl, output) {
|
|
5
|
+
return new Promise(resolve => {
|
|
6
|
+
output.write('Enter PR title: ');
|
|
7
|
+
rl.question('', answer => {
|
|
8
|
+
resolve(answer.trim());
|
|
9
|
+
});
|
|
10
|
+
});
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=prompt-for-title.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prompt-for-title.js","sourceRoot":"","sources":["../../../src/lib/create-pr/prompt-for-title.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,UAAU,cAAc,CAC5B,EAAa,EACb,MAA6B;IAE7B,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE;QAC3B,MAAM,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAA;QAChC,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC,EAAE;YACvB,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAA;QACxB,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;AACJ,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
type Priority = 'low' | 'medium' | 'high';
|
|
2
|
+
type Status = 'draft' | 'open';
|
|
3
|
+
export interface GatherPrInputResult {
|
|
4
|
+
title: string | null;
|
|
5
|
+
description: string;
|
|
6
|
+
sourceBranch: string;
|
|
7
|
+
targetBranch: string;
|
|
8
|
+
linkedIssues: string[];
|
|
9
|
+
reviewers: string[];
|
|
10
|
+
priority: Priority;
|
|
11
|
+
status: Status;
|
|
12
|
+
}
|
|
13
|
+
export {};
|
|
14
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/lib/create-pr/types.ts"],"names":[],"mappings":"AAAA,KAAK,QAAQ,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAA;AACzC,KAAK,MAAM,GAAG,OAAO,GAAG,MAAM,CAAA;AAE9B,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,WAAW,EAAE,MAAM,CAAA;IACnB,YAAY,EAAE,MAAM,CAAA;IACpB,YAAY,EAAE,MAAM,CAAA;IACpB,YAAY,EAAE,MAAM,EAAE,CAAA;IACtB,SAAS,EAAE,MAAM,EAAE,CAAA;IACnB,QAAQ,EAAE,QAAQ,CAAA;IAClB,MAAM,EAAE,MAAM,CAAA;CACf"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/lib/create-pr/types.ts"],"names":[],"mappings":""}
|
package/dist/tui/App.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"App.d.ts","sourceRoot":"","sources":["../../src/tui/App.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"App.d.ts","sourceRoot":"","sources":["../../src/tui/App.tsx"],"names":[],"mappings":"AA8BA,UAAU,QAAQ;IAChB,MAAM,EAAE,MAAM,IAAI,CAAA;CACnB;AAED,wBAAgB,GAAG,CAAC,EAAE,MAAM,EAAE,EAAE,QAAQ,6BA+JvC"}
|
package/dist/tui/App.js
CHANGED
|
@@ -9,6 +9,10 @@ import { IssueList } from './components/domain/IssueList.js';
|
|
|
9
9
|
import { IssueDetail } from './components/domain/IssueDetail.js';
|
|
10
10
|
import { IssueCreate } from './components/domain/IssueCreate.js';
|
|
11
11
|
import { IssueEdit } from './components/domain/IssueEdit.js';
|
|
12
|
+
import { PRList } from './components/domain/PRList.js';
|
|
13
|
+
import { PRDetail } from './components/domain/PRDetail.js';
|
|
14
|
+
import { PRCreate } from './components/domain/PRCreate.js';
|
|
15
|
+
import { PREdit } from './components/domain/PREdit.js';
|
|
12
16
|
import { DocList } from './components/domain/DocList.js';
|
|
13
17
|
import { DocDetail } from './components/domain/DocDetail.js';
|
|
14
18
|
import { DocCreate } from './components/domain/DocCreate.js';
|
|
@@ -33,6 +37,8 @@ export function App({ onExit }) {
|
|
|
33
37
|
// Views that handle their own keyboard input (forms)
|
|
34
38
|
const isFormView = currentView === 'issue-create' ||
|
|
35
39
|
currentView === 'issue-edit' ||
|
|
40
|
+
currentView === 'pr-create' ||
|
|
41
|
+
currentView === 'pr-edit' ||
|
|
36
42
|
currentView === 'doc-create' ||
|
|
37
43
|
currentView === 'project-create';
|
|
38
44
|
// Global keyboard shortcuts
|
|
@@ -102,6 +108,22 @@ export function App({ onExit }) {
|
|
|
102
108
|
{ key: '^S', label: 'save' },
|
|
103
109
|
{ key: 'Esc', label: 'cancel' },
|
|
104
110
|
],
|
|
111
|
+
prs: [{ key: 'n', label: 'new' }],
|
|
112
|
+
'pr-detail': [
|
|
113
|
+
{ key: 'e', label: 'edit' },
|
|
114
|
+
{ key: 'Esc', label: 'back' },
|
|
115
|
+
{ key: 'd/u', label: 'scroll' },
|
|
116
|
+
],
|
|
117
|
+
'pr-create': [
|
|
118
|
+
{ key: 'Tab', label: 'next field' },
|
|
119
|
+
{ key: '^S', label: 'save' },
|
|
120
|
+
{ key: 'Esc', label: 'cancel' },
|
|
121
|
+
],
|
|
122
|
+
'pr-edit': [
|
|
123
|
+
{ key: 'Tab', label: 'next field' },
|
|
124
|
+
{ key: '^S', label: 'save' },
|
|
125
|
+
{ key: 'Esc', label: 'cancel' },
|
|
126
|
+
],
|
|
105
127
|
docs: [{ key: 'n', label: 'new' }],
|
|
106
128
|
'doc-detail': [
|
|
107
129
|
{ key: 'Esc', label: 'back' },
|
|
@@ -138,6 +160,14 @@ function renderView(view) {
|
|
|
138
160
|
return _jsx(IssueCreate, {});
|
|
139
161
|
case 'issue-edit':
|
|
140
162
|
return _jsx(IssueEdit, {});
|
|
163
|
+
case 'prs':
|
|
164
|
+
return _jsx(PRList, {});
|
|
165
|
+
case 'pr-detail':
|
|
166
|
+
return _jsx(PRDetail, {});
|
|
167
|
+
case 'pr-create':
|
|
168
|
+
return _jsx(PRCreate, {});
|
|
169
|
+
case 'pr-edit':
|
|
170
|
+
return _jsx(PREdit, {});
|
|
141
171
|
case 'docs':
|
|
142
172
|
return _jsx(DocList, {});
|
|
143
173
|
case 'doc-detail':
|
package/dist/tui/App.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"App.js","sourceRoot":"","sources":["../../src/tui/App.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"App.js","sourceRoot":"","sources":["../../src/tui/App.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PRCreate.d.ts","sourceRoot":"","sources":["../../../../src/tui/components/domain/PRCreate.tsx"],"names":[],"mappings":"AA4CA,wBAAgB,QAAQ,8BA6SvB"}
|
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "@opentui/react/jsx-runtime";
|
|
2
|
+
import { useState, useCallback } from 'react';
|
|
3
|
+
import { useKeyboard } from '@opentui/react';
|
|
4
|
+
import { MainPanel } from '../layout/MainPanel.js';
|
|
5
|
+
import { useNavigation } from '../../hooks/useNavigation.js';
|
|
6
|
+
import { useAppState } from '../../state/app-state.js';
|
|
7
|
+
import { useConfig } from '../../hooks/useConfig.js';
|
|
8
|
+
import { daemonService } from '../../services/daemon-service.js';
|
|
9
|
+
const FIELDS = [
|
|
10
|
+
'title',
|
|
11
|
+
'description',
|
|
12
|
+
'sourceBranch',
|
|
13
|
+
'targetBranch',
|
|
14
|
+
'priority',
|
|
15
|
+
'status',
|
|
16
|
+
];
|
|
17
|
+
const STATUS_OPTIONS = ['draft', 'open'];
|
|
18
|
+
function getPriorityColor(priority) {
|
|
19
|
+
if (priority === 1)
|
|
20
|
+
return 'red';
|
|
21
|
+
if (priority === 2)
|
|
22
|
+
return 'yellow';
|
|
23
|
+
return 'green';
|
|
24
|
+
}
|
|
25
|
+
function getPriorityLabel(priority) {
|
|
26
|
+
if (priority === 1)
|
|
27
|
+
return 'High';
|
|
28
|
+
if (priority === 2)
|
|
29
|
+
return 'Medium';
|
|
30
|
+
return 'Low';
|
|
31
|
+
}
|
|
32
|
+
function getStatusColor(status) {
|
|
33
|
+
return status === 'draft' ? 'gray' : 'blue';
|
|
34
|
+
}
|
|
35
|
+
export function PRCreate() {
|
|
36
|
+
const { goBack, navigate } = useNavigation();
|
|
37
|
+
const { state, dispatch } = useAppState();
|
|
38
|
+
const { config } = useConfig();
|
|
39
|
+
const [title, setTitle] = useState('');
|
|
40
|
+
const [description, setDescription] = useState('');
|
|
41
|
+
const [sourceBranch, setSourceBranch] = useState('');
|
|
42
|
+
const [targetBranch, setTargetBranch] = useState('main');
|
|
43
|
+
const [priority, setPriority] = useState(3); // Default to low
|
|
44
|
+
const [status, setStatus] = useState('draft');
|
|
45
|
+
const [activeField, setActiveField] = useState('title');
|
|
46
|
+
const [isSubmitting, setIsSubmitting] = useState(false);
|
|
47
|
+
const [error, setError] = useState(null);
|
|
48
|
+
const priorityLevels = config?.priorityLevels ?? 3;
|
|
49
|
+
const handleSubmit = useCallback(async () => {
|
|
50
|
+
if (!state.selectedProjectPath)
|
|
51
|
+
return;
|
|
52
|
+
if (!title.trim()) {
|
|
53
|
+
setError('Title is required');
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
56
|
+
setIsSubmitting(true);
|
|
57
|
+
setError(null);
|
|
58
|
+
const result = await daemonService.createPr(state.selectedProjectPath, {
|
|
59
|
+
title: title.trim(),
|
|
60
|
+
description: description.trim(),
|
|
61
|
+
sourceBranch: sourceBranch.trim() || undefined,
|
|
62
|
+
targetBranch: targetBranch.trim() || undefined,
|
|
63
|
+
priority,
|
|
64
|
+
status,
|
|
65
|
+
});
|
|
66
|
+
setIsSubmitting(false);
|
|
67
|
+
if (result.success) {
|
|
68
|
+
// Refresh PRs list and navigate back
|
|
69
|
+
dispatch({ type: 'SET_PRS', prs: [] }); // Clear to force reload
|
|
70
|
+
navigate('prs');
|
|
71
|
+
}
|
|
72
|
+
else {
|
|
73
|
+
setError(result.error || 'Failed to create PR');
|
|
74
|
+
}
|
|
75
|
+
}, [
|
|
76
|
+
state.selectedProjectPath,
|
|
77
|
+
title,
|
|
78
|
+
description,
|
|
79
|
+
sourceBranch,
|
|
80
|
+
targetBranch,
|
|
81
|
+
priority,
|
|
82
|
+
status,
|
|
83
|
+
dispatch,
|
|
84
|
+
navigate,
|
|
85
|
+
]);
|
|
86
|
+
const moveToNextField = useCallback(() => {
|
|
87
|
+
const currentIndex = FIELDS.indexOf(activeField);
|
|
88
|
+
if (currentIndex < FIELDS.length - 1) {
|
|
89
|
+
setActiveField(FIELDS[currentIndex + 1]);
|
|
90
|
+
}
|
|
91
|
+
}, [activeField]);
|
|
92
|
+
const moveToPrevField = useCallback(() => {
|
|
93
|
+
const currentIndex = FIELDS.indexOf(activeField);
|
|
94
|
+
if (currentIndex > 0) {
|
|
95
|
+
setActiveField(FIELDS[currentIndex - 1]);
|
|
96
|
+
}
|
|
97
|
+
}, [activeField]);
|
|
98
|
+
const cyclePriority = useCallback((direction) => {
|
|
99
|
+
if (direction === 'up') {
|
|
100
|
+
setPriority(prev => (prev > 1 ? prev - 1 : priorityLevels));
|
|
101
|
+
}
|
|
102
|
+
else {
|
|
103
|
+
setPriority(prev => (prev < priorityLevels ? prev + 1 : 1));
|
|
104
|
+
}
|
|
105
|
+
}, [priorityLevels]);
|
|
106
|
+
const cycleStatus = useCallback(() => {
|
|
107
|
+
setStatus(prev => (prev === 'draft' ? 'open' : 'draft'));
|
|
108
|
+
}, []);
|
|
109
|
+
useKeyboard((event) => {
|
|
110
|
+
// Cancel with Escape
|
|
111
|
+
if (event.name === 'escape') {
|
|
112
|
+
goBack();
|
|
113
|
+
return;
|
|
114
|
+
}
|
|
115
|
+
// Submit with Ctrl+S
|
|
116
|
+
if (event.ctrl && event.name === 's') {
|
|
117
|
+
handleSubmit();
|
|
118
|
+
return;
|
|
119
|
+
}
|
|
120
|
+
// Navigate between fields with Tab/Shift+Tab
|
|
121
|
+
if (event.name === 'tab') {
|
|
122
|
+
if (event.shift) {
|
|
123
|
+
moveToPrevField();
|
|
124
|
+
}
|
|
125
|
+
else {
|
|
126
|
+
moveToNextField();
|
|
127
|
+
}
|
|
128
|
+
return;
|
|
129
|
+
}
|
|
130
|
+
// Handle input based on active field
|
|
131
|
+
if (activeField === 'priority') {
|
|
132
|
+
if (event.name === 'up' ||
|
|
133
|
+
event.name === 'k' ||
|
|
134
|
+
event.name === 'left' ||
|
|
135
|
+
event.name === 'h') {
|
|
136
|
+
cyclePriority('up');
|
|
137
|
+
}
|
|
138
|
+
else if (event.name === 'down' ||
|
|
139
|
+
event.name === 'j' ||
|
|
140
|
+
event.name === 'right' ||
|
|
141
|
+
event.name === 'l') {
|
|
142
|
+
cyclePriority('down');
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
else if (activeField === 'status') {
|
|
146
|
+
if (event.name === 'up' ||
|
|
147
|
+
event.name === 'k' ||
|
|
148
|
+
event.name === 'down' ||
|
|
149
|
+
event.name === 'j' ||
|
|
150
|
+
event.name === 'left' ||
|
|
151
|
+
event.name === 'h' ||
|
|
152
|
+
event.name === 'right' ||
|
|
153
|
+
event.name === 'l') {
|
|
154
|
+
cycleStatus();
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
else {
|
|
158
|
+
// Handle text input for title, description, sourceBranch, targetBranch
|
|
159
|
+
const setters = {
|
|
160
|
+
title: setTitle,
|
|
161
|
+
description: setDescription,
|
|
162
|
+
sourceBranch: setSourceBranch,
|
|
163
|
+
targetBranch: setTargetBranch,
|
|
164
|
+
};
|
|
165
|
+
const setter = setters[activeField];
|
|
166
|
+
if (event.name === 'backspace') {
|
|
167
|
+
setter(prev => prev.slice(0, -1));
|
|
168
|
+
}
|
|
169
|
+
else if (event.name === 'return') {
|
|
170
|
+
if (activeField === 'description') {
|
|
171
|
+
setter(prev => prev + '\n');
|
|
172
|
+
}
|
|
173
|
+
else {
|
|
174
|
+
moveToNextField();
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
else if (event.name === 'space') {
|
|
178
|
+
setter(prev => prev + ' ');
|
|
179
|
+
}
|
|
180
|
+
else if (event.name.length === 1 && !event.ctrl && !event.meta) {
|
|
181
|
+
const char = event.shift ? event.name.toUpperCase() : event.name;
|
|
182
|
+
setter(prev => prev + char);
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
});
|
|
186
|
+
const projectName = state.selectedProjectPath?.split('/').pop() || 'Project';
|
|
187
|
+
if (!state.selectedProjectPath) {
|
|
188
|
+
return (_jsx(MainPanel, { title: "New PR", children: _jsx("text", { fg: "gray", children: "Select a project first." }) }));
|
|
189
|
+
}
|
|
190
|
+
if (isSubmitting) {
|
|
191
|
+
return (_jsx(MainPanel, { title: `New PR - ${projectName}`, children: _jsx("text", { fg: "cyan", children: "Creating PR..." }) }));
|
|
192
|
+
}
|
|
193
|
+
return (_jsx(MainPanel, { title: `New PR - ${projectName}`, children: _jsxs("box", { flexDirection: "column", flexGrow: 1, children: [_jsx("box", { marginBottom: 1, children: _jsx("text", { fg: "gray", children: "Tab: next field | Shift+Tab: prev | Ctrl+S: save | Esc: cancel" }) }), error && (_jsx("box", { marginBottom: 1, children: _jsx("text", { fg: "red", children: error }) })), _jsxs("box", { flexDirection: "column", marginBottom: 1, children: [_jsx("text", { fg: activeField === 'title' ? 'cyan' : 'white', children: _jsxs("b", { children: ["Title ", activeField === 'title' ? '▸' : ' '] }) }), _jsxs("box", { paddingLeft: 2, borderStyle: activeField === 'title' ? 'single' : undefined, children: [_jsx("text", { children: title || (activeField === 'title' ? '│' : '') }), activeField === 'title' && _jsx("text", { fg: "cyan", children: "_" })] })] }), _jsxs("box", { flexDirection: "column", marginBottom: 1, children: [_jsx("text", { fg: activeField === 'description' ? 'cyan' : 'white', children: _jsxs("b", { children: ["Description ", activeField === 'description' ? '▸' : ' '] }) }), _jsxs("box", { paddingLeft: 2, borderStyle: activeField === 'description' ? 'single' : undefined, height: 3, children: [_jsx("text", { children: description || (activeField === 'description' ? '' : '') }), activeField === 'description' && _jsx("text", { fg: "cyan", children: "_" })] })] }), _jsxs("box", { flexDirection: "column", marginBottom: 1, children: [_jsxs("text", { fg: activeField === 'sourceBranch' ? 'cyan' : 'white', children: [_jsxs("b", { children: ["Source Branch ", activeField === 'sourceBranch' ? '▸' : ' '] }), _jsx("text", { fg: "gray", children: " (auto-detected if empty)" })] }), _jsxs("box", { paddingLeft: 2, borderStyle: activeField === 'sourceBranch' ? 'single' : undefined, children: [_jsx("text", { children: sourceBranch || (activeField === 'sourceBranch' ? '│' : '') }), activeField === 'sourceBranch' && _jsx("text", { fg: "cyan", children: "_" })] })] }), _jsxs("box", { flexDirection: "column", marginBottom: 1, children: [_jsx("text", { fg: activeField === 'targetBranch' ? 'cyan' : 'white', children: _jsxs("b", { children: ["Target Branch ", activeField === 'targetBranch' ? '▸' : ' '] }) }), _jsxs("box", { paddingLeft: 2, borderStyle: activeField === 'targetBranch' ? 'single' : undefined, children: [_jsx("text", { children: targetBranch || (activeField === 'targetBranch' ? '│' : '') }), activeField === 'targetBranch' && _jsx("text", { fg: "cyan", children: "_" })] })] }), _jsxs("box", { flexDirection: "column", marginBottom: 1, children: [_jsx("text", { fg: activeField === 'priority' ? 'cyan' : 'white', children: _jsxs("b", { children: ["Priority ", activeField === 'priority' ? '▸' : ' '] }) }), _jsxs("box", { paddingLeft: 2, flexDirection: "row", children: [activeField === 'priority' && _jsx("text", { fg: "gray", children: "\u25C0 " }), _jsxs("text", { fg: getPriorityColor(priority), children: [getPriorityLabel(priority), " (", priority, "/", priorityLevels, ")"] }), activeField === 'priority' && _jsx("text", { fg: "gray", children: " \u25B6" })] })] }), _jsxs("box", { flexDirection: "column", marginBottom: 1, children: [_jsx("text", { fg: activeField === 'status' ? 'cyan' : 'white', children: _jsxs("b", { children: ["Status ", activeField === 'status' ? '▸' : ' '] }) }), _jsxs("box", { paddingLeft: 2, flexDirection: "row", children: [activeField === 'status' && _jsx("text", { fg: "gray", children: "\u25C0 " }), _jsx("text", { fg: getStatusColor(status), children: status }), activeField === 'status' && _jsx("text", { fg: "gray", children: " \u25B6" })] })] }), _jsx("box", { marginTop: 1, children: _jsx("text", { fg: "green", children: "Press Ctrl+S to create PR" }) })] }) }));
|
|
194
|
+
}
|
|
195
|
+
//# sourceMappingURL=PRCreate.js.map
|