claude-issue-solver 1.41.0 → 1.42.1
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/select.d.ts +5 -1
- package/dist/commands/select.js +8 -1
- package/dist/index.js +2 -0
- package/dist/utils/helpers.js +10 -2
- package/package.json +1 -1
|
@@ -1,2 +1,6 @@
|
|
|
1
1
|
import { SolveOptions } from './solve';
|
|
2
|
-
export
|
|
2
|
+
export interface SelectOptions extends SolveOptions {
|
|
3
|
+
limit?: number;
|
|
4
|
+
all?: boolean;
|
|
5
|
+
}
|
|
6
|
+
export declare function selectCommand(options?: SelectOptions): Promise<void>;
|
package/dist/commands/select.js
CHANGED
|
@@ -12,11 +12,18 @@ const solve_1 = require("./solve");
|
|
|
12
12
|
async function selectCommand(options = {}) {
|
|
13
13
|
const projectName = (0, git_1.getProjectName)();
|
|
14
14
|
console.log(chalk_1.default.bold(`\nOpen issues for ${projectName}:\n`));
|
|
15
|
-
const
|
|
15
|
+
const limit = options.all ? 0 : (options.limit ?? 50);
|
|
16
|
+
const issues = (0, github_1.listIssues)(limit);
|
|
16
17
|
if (issues.length === 0) {
|
|
17
18
|
console.log(chalk_1.default.yellow('No open issues found.'));
|
|
18
19
|
return;
|
|
19
20
|
}
|
|
21
|
+
// Show hint if we hit the default limit and user didn't explicitly set options
|
|
22
|
+
const defaultLimit = 50;
|
|
23
|
+
const hitLimit = !options.all && !options.limit && issues.length === defaultLimit;
|
|
24
|
+
if (hitLimit) {
|
|
25
|
+
console.log(chalk_1.default.dim(` Showing first ${defaultLimit} issues. Use --limit <n> or --all to see more.\n`));
|
|
26
|
+
}
|
|
20
27
|
const issuesWithPRs = (0, github_1.getIssuesWithOpenPRs)();
|
|
21
28
|
const choices = issues.map((issue) => {
|
|
22
29
|
const hasPR = issuesWithPRs.has(issue.number);
|
package/dist/index.js
CHANGED
|
@@ -53,6 +53,8 @@ program.hook('preAction', (thisCommand) => {
|
|
|
53
53
|
program
|
|
54
54
|
.argument('[issue]', 'Issue number to solve')
|
|
55
55
|
.option('-c, --auto-close', 'Close terminal and clean up worktree after PR is created')
|
|
56
|
+
.option('-n, --limit <number>', 'Maximum number of issues to show', (val) => parseInt(val, 10))
|
|
57
|
+
.option('--all', 'Show all issues (no limit)')
|
|
56
58
|
.action(async (issue, options) => {
|
|
57
59
|
if (issue) {
|
|
58
60
|
const issueNumber = parseInt(issue, 10);
|
package/dist/utils/helpers.js
CHANGED
|
@@ -75,19 +75,27 @@ function openInNewTerminal(script) {
|
|
|
75
75
|
const platform = os.platform();
|
|
76
76
|
if (platform === 'darwin') {
|
|
77
77
|
// macOS - try iTerm2 first, then Terminal
|
|
78
|
+
// Use /bin/bash explicitly to bypass interactive shell issues (e.g., oh-my-zsh update prompts)
|
|
79
|
+
// Send 'n' first to dismiss any oh-my-zsh update prompt, then run the script
|
|
80
|
+
const escapedScript = script.replace(/"/g, '\\"');
|
|
81
|
+
const bashCommand = `/bin/bash "${escapedScript}"`;
|
|
82
|
+
// For iTerm: send 'n' to dismiss any prompt, wait briefly, then run the command
|
|
78
83
|
const iTermScript = `
|
|
79
84
|
tell application "iTerm"
|
|
80
85
|
activate
|
|
81
86
|
set newWindow to (create window with default profile)
|
|
82
87
|
tell current session of newWindow
|
|
83
|
-
write text "
|
|
88
|
+
write text "n"
|
|
89
|
+
delay 0.3
|
|
90
|
+
write text "${bashCommand.replace(/"/g, '\\"')}"
|
|
84
91
|
end tell
|
|
85
92
|
end tell
|
|
86
93
|
`;
|
|
94
|
+
// For Terminal: combine dismissing prompt and running command
|
|
87
95
|
const terminalScript = `
|
|
88
96
|
tell application "Terminal"
|
|
89
97
|
activate
|
|
90
|
-
do script "${
|
|
98
|
+
do script "n; ${bashCommand.replace(/"/g, '\\"')}"
|
|
91
99
|
end tell
|
|
92
100
|
`;
|
|
93
101
|
try {
|