@bretwardjames/ghp-cli 0.12.0 → 0.13.0

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.
@@ -1 +1 @@
1
- {"version":3,"file":"agents.d.ts","sourceRoot":"","sources":["../../src/commands/agents.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAqEH;;GAEG;AACH,wBAAsB,iBAAiB,CAAC,OAAO,GAAE,iBAAsB,GAAG,OAAO,CAAC,IAAI,CAAC,CAqDtF;AAED,UAAU,iBAAiB;IACvB,IAAI,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,UAAU,iBAAiB;IACvB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,GAAG,CAAC,EAAE,OAAO,CAAC;CACjB;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CACnC,QAAQ,EAAE,MAAM,GAAG,SAAS,EAC5B,OAAO,GAAE,iBAAsB,GAChC,OAAO,CAAC,IAAI,CAAC,CAsCf;AAoFD,UAAU,kBAAkB;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACrB;AAgDD;;GAEG;AACH,wBAAsB,kBAAkB,CAAC,OAAO,GAAE,kBAAuB,GAAG,OAAO,CAAC,IAAI,CAAC,CAiFxF"}
1
+ {"version":3,"file":"agents.d.ts","sourceRoot":"","sources":["../../src/commands/agents.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAsEH;;GAEG;AACH,wBAAsB,iBAAiB,CAAC,OAAO,GAAE,iBAAsB,GAAG,OAAO,CAAC,IAAI,CAAC,CAqDtF;AAED,UAAU,iBAAiB;IACvB,IAAI,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,UAAU,iBAAiB;IACvB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,GAAG,CAAC,EAAE,OAAO,CAAC;CACjB;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CACnC,QAAQ,EAAE,MAAM,GAAG,SAAS,EAC5B,OAAO,GAAE,iBAAsB,GAChC,OAAO,CAAC,IAAI,CAAC,CAsCf;AAsFD,UAAU,kBAAkB;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACrB;AAgDD;;GAEG;AACH,wBAAsB,kBAAkB,CAAC,OAAO,GAAE,kBAAuB,GAAG,OAAO,CAAC,IAAI,CAAC,CAiFxF"}
@@ -6,7 +6,8 @@
6
6
  import chalk from 'chalk';
7
7
  import { listAgents, getAgentSummaries, getAgent, getAgentByIssue, unregisterAgent, updateAgent, createSessionWatcher, } from '@bretwardjames/ghp-core';
8
8
  import { confirmWithDefault, isInteractive } from '../prompts.js';
9
- import { killTmuxWindow, isInsideTmux } from '../terminal-utils.js';
9
+ import { killTmuxWindow, isInsideTmux, resolveWindowName } from '../terminal-utils.js';
10
+ import { getParallelWorkConfig } from '../config.js';
10
11
  import { exit, registerCleanupHandler } from '../exit.js';
11
12
  // Track active session watchers
12
13
  const sessionWatchers = new Map();
@@ -144,7 +145,8 @@ async function stopAgent(agentId, issueNumber) {
144
145
  console.log(chalk.dim(`Stopping agent for #${issueNumber}...`));
145
146
  // Try to kill the tmux window if we're in tmux
146
147
  if (isInsideTmux()) {
147
- const windowName = `ghp-${issueNumber}`;
148
+ const windowConfig = getParallelWorkConfig();
149
+ const windowName = resolveWindowName(windowConfig.tmuxWindowName, { issueNumber, issueTitle: '' });
148
150
  const result = await killTmuxWindow(windowName);
149
151
  if (result.success) {
150
152
  console.log(chalk.dim(`Killed tmux window: ${windowName}`));
@@ -190,7 +192,8 @@ async function stopAllAgents(force) {
190
192
  for (const agent of agents) {
191
193
  // Try to kill tmux window
192
194
  if (isInsideTmux()) {
193
- const windowName = `ghp-${agent.issueNumber}`;
195
+ const windowConfig = getParallelWorkConfig();
196
+ const windowName = resolveWindowName(windowConfig.tmuxWindowName, { issueNumber: agent.issueNumber, issueTitle: '' });
194
197
  await killTmuxWindow(windowName);
195
198
  }
196
199
  else if (agent.pid > 0) {
@@ -1 +1 @@
1
- {"version":3,"file":"agents.js","sourceRoot":"","sources":["../../src/commands/agents.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agents.js","sourceRoot":"","sources":["../../src/commands/agents.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ interface ReviewOptions {
2
+ json?: boolean;
3
+ }
4
+ export declare function reviewCommand(pr: string | undefined, options: ReviewOptions): Promise<void>;
5
+ export {};
6
+ //# sourceMappingURL=review.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"review.d.ts","sourceRoot":"","sources":["../../src/commands/review.ts"],"names":[],"mappings":"AASA,UAAU,aAAa;IACnB,IAAI,CAAC,EAAE,OAAO,CAAC;CAClB;AA2OD,wBAAsB,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,SAAS,EAAE,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAiCjG"}
@@ -0,0 +1,177 @@
1
+ import chalk from 'chalk';
2
+ import { exec } from 'child_process';
3
+ import { promisify } from 'util';
4
+ import { detectRepository } from '../git-utils.js';
5
+ import { api } from '../github-api.js';
6
+ import { exit } from '../exit.js';
7
+ const execAsync = promisify(exec);
8
+ // Helpers
9
+ function getCiStatus(checks) {
10
+ if (!checks || checks.length === 0)
11
+ return 'pending';
12
+ const completed = checks.filter(c => c.status === 'COMPLETED');
13
+ if (completed.length === 0)
14
+ return 'pending';
15
+ const failed = completed.some(c => c.conclusion === 'FAILURE' ||
16
+ c.conclusion === 'CANCELLED' ||
17
+ c.conclusion === 'TIMED_OUT' ||
18
+ c.conclusion === 'ACTION_REQUIRED');
19
+ return failed ? 'fail' : 'pass';
20
+ }
21
+ function hasUserApproved(reviews, username) {
22
+ return reviews.some(r => r.author.login === username &&
23
+ (r.state === 'APPROVED' || r.state === 'CHANGES_REQUESTED'));
24
+ }
25
+ function isPartiallyReviewed(reviews, username) {
26
+ return reviews.some(r => r.author.login === username && r.state === 'COMMENTED') &&
27
+ !hasUserApproved(reviews, username);
28
+ }
29
+ function reviewCommentCount(reviews, username) {
30
+ return reviews.filter(r => r.author.login === username).length;
31
+ }
32
+ // Command handlers
33
+ async function reviewList(owner, repo, username, options) {
34
+ let prs;
35
+ try {
36
+ const { stdout } = await execAsync(`gh pr list --repo ${owner}/${repo} --state open --limit 100` +
37
+ ` --json number,title,author,additions,deletions,changedFiles,reviews,statusCheckRollup`);
38
+ prs = JSON.parse(stdout);
39
+ }
40
+ catch (error) {
41
+ console.error(chalk.red('Error:'), 'Failed to fetch open PRs:', error instanceof Error ? error.message : String(error));
42
+ exit(1);
43
+ return;
44
+ }
45
+ const pending = prs
46
+ .filter(p => p.author.login !== username)
47
+ .filter(p => getCiStatus(p.statusCheckRollup) === 'pass')
48
+ .filter(p => !hasUserApproved(p.reviews, username))
49
+ .map(p => ({
50
+ number: p.number,
51
+ title: p.title,
52
+ author: p.author.login,
53
+ files_changed: p.changedFiles,
54
+ additions: p.additions,
55
+ deletions: p.deletions,
56
+ review_comment_count: reviewCommentCount(p.reviews, username),
57
+ partially_reviewed: isPartiallyReviewed(p.reviews, username),
58
+ }));
59
+ if (options.json) {
60
+ console.log(JSON.stringify({ prs: pending }, null, 2));
61
+ return;
62
+ }
63
+ if (pending.length === 0) {
64
+ console.log(chalk.dim('No PRs pending review.'));
65
+ return;
66
+ }
67
+ console.log(chalk.bold(`\n${pending.length} PR(s) pending review:\n`));
68
+ for (const p of pending) {
69
+ const size = chalk.dim(`+${p.additions}/-${p.deletions} · ${p.files_changed} file(s)`);
70
+ const partial = p.partially_reviewed ? chalk.yellow(' · partial review') : '';
71
+ const comments = p.review_comment_count > 0 ? chalk.dim(` · ${p.review_comment_count} comment(s)`) : '';
72
+ console.log(` ${chalk.cyan(`#${p.number}`)} ${p.title}`);
73
+ console.log(` ${chalk.dim('@' + p.author)} ${size}${comments}${partial}`);
74
+ }
75
+ console.log();
76
+ }
77
+ async function reviewDetail(owner, repo, prNumber, username, options) {
78
+ // Fetch PR metadata
79
+ let prData;
80
+ try {
81
+ const { stdout } = await execAsync(`gh pr view ${prNumber} --repo ${owner}/${repo}` +
82
+ ` --json number,title,author,additions,deletions,changedFiles,reviews`);
83
+ prData = JSON.parse(stdout);
84
+ }
85
+ catch (error) {
86
+ console.error(chalk.red('Error:'), `Failed to fetch PR #${prNumber}:`, error instanceof Error ? error.message : String(error));
87
+ exit(1);
88
+ return;
89
+ }
90
+ // Fetch inline review comments (yours only — for dedup)
91
+ let inlineComments = [];
92
+ try {
93
+ const { stdout } = await execAsync(`gh api "/repos/${owner}/${repo}/pulls/${prNumber}/comments?per_page=100"`);
94
+ const raw = JSON.parse(stdout);
95
+ inlineComments = raw
96
+ .filter(c => c.user.login === username)
97
+ .map(c => ({
98
+ path: c.path,
99
+ line: c.line ?? c.original_line,
100
+ body: c.body,
101
+ }));
102
+ }
103
+ catch {
104
+ // non-fatal — proceed without inline comments
105
+ }
106
+ // Fetch diff
107
+ let diff = '';
108
+ try {
109
+ const { stdout } = await execAsync(`gh api "/repos/${owner}/${repo}/pulls/${prNumber}" -H "Accept: application/vnd.github.diff"`);
110
+ diff = stdout;
111
+ }
112
+ catch {
113
+ // non-fatal
114
+ }
115
+ const result = {
116
+ number: prData.number,
117
+ title: prData.title,
118
+ author: prData.author.login,
119
+ files_changed: prData.changedFiles,
120
+ additions: prData.additions,
121
+ deletions: prData.deletions,
122
+ existing_review_comments: inlineComments,
123
+ diff,
124
+ };
125
+ if (options.json) {
126
+ console.log(JSON.stringify(result, null, 2));
127
+ return;
128
+ }
129
+ // Human-readable
130
+ console.log(chalk.bold(`\nPR #${result.number}: ${result.title}`));
131
+ console.log(chalk.dim(`@${result.author} · +${result.additions}/-${result.deletions} across ${result.files_changed} file(s)`));
132
+ if (inlineComments.length > 0) {
133
+ console.log(chalk.yellow(`\nYour existing inline comments (${inlineComments.length}):`));
134
+ for (const c of inlineComments) {
135
+ const loc = chalk.dim(`${c.path}:${c.line ?? '?'}`);
136
+ const preview = c.body.length > 100 ? c.body.substring(0, 100) + '…' : c.body;
137
+ console.log(` ${loc} ${preview}`);
138
+ }
139
+ }
140
+ if (diff) {
141
+ console.log(chalk.bold('\nDiff:\n'));
142
+ console.log(diff);
143
+ }
144
+ }
145
+ export async function reviewCommand(pr, options) {
146
+ const repo = await detectRepository();
147
+ if (!repo) {
148
+ console.error(chalk.red('Error:'), 'Not in a git repository with a GitHub remote');
149
+ exit(1);
150
+ return;
151
+ }
152
+ const authenticated = await api.authenticate();
153
+ if (!authenticated) {
154
+ console.error(chalk.red('Error:'), 'Not authenticated. Run', chalk.cyan('ghp auth'));
155
+ exit(1);
156
+ return;
157
+ }
158
+ const username = api.username;
159
+ if (!username) {
160
+ console.error(chalk.red('Error:'), 'Could not determine current user');
161
+ exit(1);
162
+ return;
163
+ }
164
+ if (pr !== undefined) {
165
+ const prNumber = parseInt(pr, 10);
166
+ if (isNaN(prNumber)) {
167
+ console.error(chalk.red('Error:'), 'PR must be a number');
168
+ exit(1);
169
+ return;
170
+ }
171
+ await reviewDetail(repo.owner, repo.name, prNumber, username, options);
172
+ }
173
+ else {
174
+ await reviewList(repo.owner, repo.name, username, options);
175
+ }
176
+ }
177
+ //# sourceMappingURL=review.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"review.js","sourceRoot":"","sources":["../../src/commands/review.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ interface TmuxRenameOptions {
2
+ template?: string;
3
+ }
4
+ /**
5
+ * Rename the current tmux window to a given title or named template.
6
+ * Intended to be called from within a ghp parallel work pane (e.g. by Claude).
7
+ *
8
+ * Examples:
9
+ * ghp tmux rename "⏳ working"
10
+ * ghp tmux rename --template waiting
11
+ */
12
+ export declare function tmuxRenameCommand(title: string | undefined, options: TmuxRenameOptions): Promise<void>;
13
+ interface InstallHooksOptions {
14
+ global?: boolean;
15
+ force?: boolean;
16
+ }
17
+ /**
18
+ * Install Claude Code lifecycle hooks that call `ghp tmux rename` automatically.
19
+ * Writes to .claude/settings.json (local) or ~/.claude/settings.json (--global).
20
+ * Also installs default title templates into .ghp/config.json if none exist.
21
+ */
22
+ export declare function tmuxInstallHooksCommand(options: InstallHooksOptions): Promise<void>;
23
+ export {};
24
+ //# sourceMappingURL=tmux.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tmux.d.ts","sourceRoot":"","sources":["../../src/commands/tmux.ts"],"names":[],"mappings":"AASA,UAAU,iBAAiB;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACrB;AA0CD;;;;;;;GAOG;AACH,wBAAsB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,EAAE,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAqC5G;AAMD,UAAU,mBAAmB;IACzB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;CACnB;AAmCD;;;;GAIG;AACH,wBAAsB,uBAAuB,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CAkFzF"}
@@ -0,0 +1,197 @@
1
+ import chalk from 'chalk';
2
+ import { spawn } from 'child_process';
3
+ import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'fs';
4
+ import { join, dirname } from 'path';
5
+ import { homedir } from 'os';
6
+ import { getParallelWorkConfig, setConfigByPath, loadConfig } from '../config.js';
7
+ import { isInsideTmux } from '../terminal-utils.js';
8
+ import { exit } from '../exit.js';
9
+ /**
10
+ * Resolve template vars in a title template string.
11
+ * Reads {issueNumber}, {issueTitle}, {branch} from GHP_SPAWN_CONTEXT env var.
12
+ */
13
+ function resolveTitle(template) {
14
+ let issueNumber = '';
15
+ let issueTitle = '';
16
+ let branch = '';
17
+ const raw = process.env.GHP_SPAWN_CONTEXT;
18
+ if (raw) {
19
+ try {
20
+ const ctx = JSON.parse(raw);
21
+ issueNumber = String(ctx.issue?.number ?? '');
22
+ issueTitle = ctx.issue?.title ?? '';
23
+ branch = ctx.branch ?? '';
24
+ }
25
+ catch { /* ignore parse errors */ }
26
+ }
27
+ return template
28
+ .replace(/\{issueNumber\}/g, issueNumber)
29
+ .replace(/\{issueTitle\}/g, issueTitle)
30
+ .replace(/\{branch\}/g, branch);
31
+ }
32
+ /**
33
+ * Rename the current tmux window.
34
+ * `tmux rename-window` without a -t flag targets the window of the calling pane.
35
+ */
36
+ async function renameTmuxWindow(name) {
37
+ return new Promise((resolve, reject) => {
38
+ const child = spawn('tmux', ['rename-window', name], { stdio: 'ignore' });
39
+ child.on('error', reject);
40
+ child.on('close', (code) => {
41
+ if (code === 0)
42
+ resolve();
43
+ else
44
+ reject(new Error(`tmux rename-window exited with code ${code}`));
45
+ });
46
+ });
47
+ }
48
+ /**
49
+ * Rename the current tmux window to a given title or named template.
50
+ * Intended to be called from within a ghp parallel work pane (e.g. by Claude).
51
+ *
52
+ * Examples:
53
+ * ghp tmux rename "⏳ working"
54
+ * ghp tmux rename --template waiting
55
+ */
56
+ export async function tmuxRenameCommand(title, options) {
57
+ if (!isInsideTmux()) {
58
+ // Silently no-op outside tmux — safe to call unconditionally from Claude hooks
59
+ return;
60
+ }
61
+ let resolvedTitle;
62
+ if (options.template) {
63
+ const config = getParallelWorkConfig();
64
+ const templateStr = config.tmuxTitleTemplates[options.template];
65
+ if (!templateStr) {
66
+ const available = Object.keys(config.tmuxTitleTemplates);
67
+ console.error(chalk.red('Error:'), `Title template "${options.template}" not found.`);
68
+ if (available.length > 0) {
69
+ console.error(`Available templates: ${available.join(', ')}`);
70
+ }
71
+ else {
72
+ console.error('No title templates configured. Add them under parallelWork.tmux.titleTemplates in your config.');
73
+ }
74
+ exit(1);
75
+ return;
76
+ }
77
+ resolvedTitle = resolveTitle(templateStr);
78
+ }
79
+ else if (title) {
80
+ resolvedTitle = resolveTitle(title);
81
+ }
82
+ else {
83
+ console.error(chalk.red('Error:'), 'Provide a title or --template <name>');
84
+ exit(1);
85
+ return;
86
+ }
87
+ try {
88
+ await renameTmuxWindow(resolvedTitle);
89
+ }
90
+ catch (error) {
91
+ console.error(chalk.red('Error:'), 'Failed to rename tmux window:', error instanceof Error ? error.message : String(error));
92
+ exit(1);
93
+ }
94
+ }
95
+ /** The three lifecycle events we hook into */
96
+ const TMUX_HOOKS = [
97
+ { event: 'SessionStart', template: 'working', description: 'Rename window when Claude starts working' },
98
+ { event: 'Stop', template: 'done', description: 'Rename window when Claude finishes' },
99
+ { event: 'Notification', template: 'waiting', description: 'Rename window when Claude needs attention' },
100
+ ];
101
+ /** Default title templates to add if none are configured */
102
+ const DEFAULT_TITLE_TEMPLATES = {
103
+ working: '⚙️ {issueNumber}',
104
+ waiting: '⏳ {issueNumber}',
105
+ done: '✅ {issueNumber}',
106
+ };
107
+ function readJsonFile(filePath) {
108
+ if (!existsSync(filePath))
109
+ return {};
110
+ const content = readFileSync(filePath, 'utf-8');
111
+ try {
112
+ return JSON.parse(content);
113
+ }
114
+ catch (err) {
115
+ console.error(chalk.red('Error:'), `Failed to parse ${filePath}: ${err instanceof Error ? err.message : err}`);
116
+ console.error('Fix the JSON syntax error and try again.');
117
+ exit(1);
118
+ return {}; // unreachable — satisfies TypeScript
119
+ }
120
+ }
121
+ function writeJsonFile(filePath, data) {
122
+ const dir = dirname(filePath);
123
+ if (!existsSync(dir))
124
+ mkdirSync(dir, { recursive: true });
125
+ writeFileSync(filePath, JSON.stringify(data, null, 2) + '\n');
126
+ }
127
+ /**
128
+ * Install Claude Code lifecycle hooks that call `ghp tmux rename` automatically.
129
+ * Writes to .claude/settings.json (local) or ~/.claude/settings.json (--global).
130
+ * Also installs default title templates into .ghp/config.json if none exist.
131
+ */
132
+ export async function tmuxInstallHooksCommand(options) {
133
+ // --- 1. Determine settings.json path ---
134
+ const settingsPath = options.global
135
+ ? join(homedir(), '.claude', 'settings.json')
136
+ : join(process.cwd(), '.claude', 'settings.json');
137
+ const scopeLabel = options.global ? 'global (~/.claude/settings.json)' : 'local (.claude/settings.json)';
138
+ // --- 2. Load existing settings ---
139
+ const settings = readJsonFile(settingsPath);
140
+ const hooks = (settings.hooks ?? {});
141
+ // --- 3. Install each hook event ---
142
+ let installed = 0;
143
+ let skipped = 0;
144
+ for (const { event, template, description } of TMUX_HOOKS) {
145
+ const command = `ghp tmux rename --template ${template}`;
146
+ const newEntry = { matcher: '', hooks: [{ type: 'command', command }] };
147
+ const existing = (hooks[event] ?? []);
148
+ // Check if this exact command is already registered
149
+ const alreadyPresent = existing.some(entry => entry.hooks?.some(h => h.command === command));
150
+ if (alreadyPresent && !options.force) {
151
+ console.log(chalk.dim(` ○ ${event} — already registered`));
152
+ skipped++;
153
+ continue;
154
+ }
155
+ // Remove any existing ghp tmux rename entry if --force
156
+ if (options.force) {
157
+ hooks[event] = existing.filter(entry => !entry.hooks?.some(h => h.command?.startsWith('ghp tmux rename')));
158
+ }
159
+ (hooks[event] ??= []).push(newEntry);
160
+ console.log(chalk.green(' ✓'), `${event} — ${description}`);
161
+ installed++;
162
+ }
163
+ settings.hooks = hooks;
164
+ writeJsonFile(settingsPath, settings);
165
+ // --- 4. Install default title templates if none configured ---
166
+ const config = loadConfig();
167
+ const existingTemplates = config.parallelWork?.tmux?.titleTemplates ?? {};
168
+ const missingTemplates = {};
169
+ for (const [name, value] of Object.entries(DEFAULT_TITLE_TEMPLATES)) {
170
+ if (!existingTemplates[name]) {
171
+ missingTemplates[name] = value;
172
+ }
173
+ }
174
+ if (Object.keys(missingTemplates).length > 0) {
175
+ for (const [name, value] of Object.entries(missingTemplates)) {
176
+ setConfigByPath(`parallelWork.tmux.titleTemplates.${name}`, value, 'user');
177
+ }
178
+ console.log();
179
+ console.log(chalk.green('✓'), 'Added default title templates to user config:');
180
+ for (const [name, value] of Object.entries(missingTemplates)) {
181
+ console.log(` ${chalk.cyan(name)}: ${chalk.dim(`"${value}"`)}`);
182
+ }
183
+ console.log(chalk.dim(' Customize with: ghp config parallelWork.tmux.titleTemplates.<name> "<value>"'));
184
+ }
185
+ // --- 5. Summary ---
186
+ console.log();
187
+ if (installed > 0) {
188
+ console.log(chalk.green('✓'), `${installed} hook(s) installed to ${scopeLabel}`);
189
+ }
190
+ if (skipped > 0) {
191
+ console.log(chalk.dim(`${skipped} hook(s) already present (use --force to overwrite)`));
192
+ }
193
+ if (installed === 0 && skipped > 0) {
194
+ console.log(chalk.dim('Nothing to do.'));
195
+ }
196
+ }
197
+ //# sourceMappingURL=tmux.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tmux.js","sourceRoot":"","sources":["../../src/commands/tmux.ts"],"names":[],"mappings":"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"}
package/dist/config.d.ts CHANGED
@@ -28,7 +28,21 @@ export interface WorkDefaults {
28
28
  * - 'nvim-claude': Open nvim with coder/claudecode.nvim plugin
29
29
  * - 'terminal': Just open terminal, no Claude
30
30
  */
31
- export type TerminalMode = 'claude' | 'nvim-claude' | 'terminal';
31
+ export type TerminalMode = 'claude' | 'nvim-claude' | 'terminal' | 'custom';
32
+ /**
33
+ * A single pane definition for the 'custom' terminal mode.
34
+ * Supports template variables: {worktreePath}, {issueNumber}, {issueTitle}, {claudeCommand}
35
+ */
36
+ export interface CustomLayoutPane {
37
+ /** Command to run in this pane */
38
+ command: string;
39
+ /** How to split from the previous pane (omit for the first/main pane) */
40
+ split?: 'horizontal' | 'vertical';
41
+ /** Size of this pane as a percentage of the pane being split (default: 50) */
42
+ size?: number;
43
+ /** Whether to focus this pane after layout is built (default: first pane) */
44
+ focus?: boolean;
45
+ }
32
46
  export interface ParallelWorkConfig {
33
47
  /** Terminal emulator to use (e.g., 'ghostty', 'gnome-terminal', 'tmux') */
34
48
  terminal?: string;
@@ -40,16 +54,35 @@ export interface ParallelWorkConfig {
40
54
  claudeCommand?: string;
41
55
  /** Whether to auto-resume previous Claude sessions when switching to worktree (default: true) */
42
56
  autoResume?: boolean;
43
- /** Terminal mode: 'claude' (default), 'nvim-claude', or 'terminal' */
57
+ /** Terminal mode: 'claude' (default), 'nvim-claude', 'terminal', or 'custom' */
44
58
  terminalMode?: TerminalMode;
45
59
  /** Neovim command to use (default: 'nvim') */
46
60
  nvimCommand?: string;
61
+ /**
62
+ * Pane layout for 'custom' terminal mode.
63
+ * First entry is the main window; subsequent entries are splits.
64
+ * Commands support template vars: {worktreePath}, {issueNumber}, {issueTitle}, {claudeCommand}
65
+ */
66
+ customLayout?: CustomLayoutPane[];
47
67
  /** Tmux-specific configuration (used when terminal is 'tmux' or auto-detected inside tmux) */
48
68
  tmux?: {
49
69
  /** Whether to spawn a new window or split the current window into a pane */
50
70
  mode?: 'window' | 'pane';
51
71
  /** Direction to split when mode is 'pane' */
52
72
  paneDirection?: 'horizontal' | 'vertical';
73
+ /**
74
+ * Template for the initial window name when spawning a parallel worktree.
75
+ * Supports {issueNumber}, {issueTitle}, {branch}.
76
+ * Default: "ghp-{issueNumber}"
77
+ */
78
+ windowName?: string;
79
+ /**
80
+ * Named title templates. Claude (or any pane) can apply one with:
81
+ * ghp tmux rename --template <name>
82
+ * Template vars: {issueNumber}, {issueTitle}, {branch}
83
+ * Example: { "waiting": "⏳ {issueNumber}", "working": "⚙️ {issueNumber}" }
84
+ */
85
+ titleTemplates?: Record<string, string>;
53
86
  };
54
87
  }
55
88
  /**
@@ -115,6 +148,7 @@ export interface Config {
115
148
  columns?: string;
116
149
  worktreePath?: string;
117
150
  worktreeCopyFiles?: string[];
151
+ worktreeLinkFiles?: string[];
118
152
  worktreeSetupCommand?: string;
119
153
  worktreeAutoSetup?: boolean;
120
154
  parallelWork?: ParallelWorkConfig;
@@ -243,6 +277,7 @@ export declare function listConfig(): Record<string, string | string[] | boolean
243
277
  export interface WorktreeConfig {
244
278
  path: string;
245
279
  copyFiles: string[];
280
+ linkFiles: string[];
246
281
  setupCommand: string;
247
282
  autoSetup: boolean;
248
283
  }
@@ -258,6 +293,11 @@ export interface ResolvedParallelWorkConfig {
258
293
  autoResume: boolean;
259
294
  terminalMode: TerminalMode;
260
295
  nvimCommand: string;
296
+ customLayout: CustomLayoutPane[];
297
+ /** Resolved tmux window name template (default: "ghp-{issueNumber}") */
298
+ tmuxWindowName: string;
299
+ /** Named title templates for `ghp tmux rename --template <name>` */
300
+ tmuxTitleTemplates: Record<string, string>;
261
301
  }
262
302
  /**
263
303
  * Get the parallel work configuration with defaults applied