cluttry 1.0.3 → 1.5.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/CHANGELOG.md +77 -0
- package/README.md +203 -300
- package/dist/commands/completions.d.ts +16 -0
- package/dist/commands/completions.d.ts.map +1 -0
- package/dist/commands/completions.js +46 -0
- package/dist/commands/completions.js.map +1 -0
- package/dist/commands/explain-copy.d.ts +11 -0
- package/dist/commands/explain-copy.d.ts.map +1 -0
- package/dist/commands/explain-copy.js +34 -0
- package/dist/commands/explain-copy.js.map +1 -0
- package/dist/commands/finish.d.ts +20 -0
- package/dist/commands/finish.d.ts.map +1 -0
- package/dist/commands/finish.js +817 -0
- package/dist/commands/finish.js.map +1 -0
- package/dist/commands/gc.d.ts +22 -0
- package/dist/commands/gc.d.ts.map +1 -0
- package/dist/commands/gc.js +163 -0
- package/dist/commands/gc.js.map +1 -0
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +1 -0
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/open.d.ts +15 -1
- package/dist/commands/open.d.ts.map +1 -1
- package/dist/commands/open.js +99 -17
- package/dist/commands/open.js.map +1 -1
- package/dist/commands/resume.d.ts +21 -0
- package/dist/commands/resume.d.ts.map +1 -0
- package/dist/commands/resume.js +106 -0
- package/dist/commands/resume.js.map +1 -0
- package/dist/commands/rm.d.ts.map +1 -1
- package/dist/commands/rm.js +6 -14
- package/dist/commands/rm.js.map +1 -1
- package/dist/commands/spawn.d.ts +3 -0
- package/dist/commands/spawn.d.ts.map +1 -1
- package/dist/commands/spawn.js +182 -19
- package/dist/commands/spawn.js.map +1 -1
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +198 -9
- package/dist/index.js.map +1 -1
- package/dist/lib/completions.d.ts +35 -0
- package/dist/lib/completions.d.ts.map +1 -0
- package/dist/lib/completions.js +368 -0
- package/dist/lib/completions.js.map +1 -0
- package/dist/lib/config.d.ts.map +1 -1
- package/dist/lib/config.js +2 -0
- package/dist/lib/config.js.map +1 -1
- package/dist/lib/errors.d.ts +43 -0
- package/dist/lib/errors.d.ts.map +1 -0
- package/dist/lib/errors.js +251 -0
- package/dist/lib/errors.js.map +1 -0
- package/dist/lib/git.d.ts +17 -0
- package/dist/lib/git.d.ts.map +1 -1
- package/dist/lib/git.js +78 -10
- package/dist/lib/git.js.map +1 -1
- package/dist/lib/safety.d.ts +79 -0
- package/dist/lib/safety.d.ts.map +1 -0
- package/dist/lib/safety.js +133 -0
- package/dist/lib/safety.js.map +1 -0
- package/dist/lib/secrets.d.ts +29 -0
- package/dist/lib/secrets.d.ts.map +1 -1
- package/dist/lib/secrets.js +115 -0
- package/dist/lib/secrets.js.map +1 -1
- package/dist/lib/session.d.ts +93 -0
- package/dist/lib/session.d.ts.map +1 -0
- package/dist/lib/session.js +254 -0
- package/dist/lib/session.js.map +1 -0
- package/dist/lib/types.d.ts +6 -1
- package/dist/lib/types.d.ts.map +1 -1
- package/package.json +1 -1
- package/.claude/settings.local.json +0 -7
- package/src/commands/doctor.ts +0 -222
- package/src/commands/init.ts +0 -120
- package/src/commands/list.ts +0 -133
- package/src/commands/open.ts +0 -78
- package/src/commands/prune.ts +0 -36
- package/src/commands/rm.ts +0 -125
- package/src/commands/shell.ts +0 -99
- package/src/commands/spawn.ts +0 -169
- package/src/index.ts +0 -123
- package/src/lib/config.ts +0 -120
- package/src/lib/git.ts +0 -243
- package/src/lib/output.ts +0 -102
- package/src/lib/paths.ts +0 -108
- package/src/lib/secrets.ts +0 -193
- package/src/lib/types.ts +0 -69
- package/tests/config.test.ts +0 -102
- package/tests/paths.test.ts +0 -155
- package/tests/secrets.test.ts +0 -150
- package/tsconfig.json +0 -20
- package/vitest.config.ts +0 -15
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rm.d.ts","sourceRoot":"","sources":["../../src/commands/rm.ts"],"names":[],"mappings":"AAAA;;;;GAIG;
|
|
1
|
+
{"version":3,"file":"rm.d.ts","sourceRoot":"","sources":["../../src/commands/rm.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAgBH,UAAU,SAAS;IACjB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,GAAG,CAAC,EAAE,OAAO,CAAC;CACf;AAgBD,wBAAsB,EAAE,CAAC,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CA4EhF"}
|
package/dist/commands/rm.js
CHANGED
|
@@ -7,6 +7,7 @@ import { createInterface } from 'node:readline';
|
|
|
7
7
|
import { isGitRepo, getRepoRoot, listWorktrees, removeWorktree, deleteBranch, isWorktreeDirty, getCurrentBranch, } from '../lib/git.js';
|
|
8
8
|
import { resolveBranchOrPath } from '../lib/paths.js';
|
|
9
9
|
import * as out from '../lib/output.js';
|
|
10
|
+
import { fail, errors } from '../lib/errors.js';
|
|
10
11
|
async function confirm(message) {
|
|
11
12
|
const rl = createInterface({
|
|
12
13
|
input: process.stdin,
|
|
@@ -22,8 +23,7 @@ async function confirm(message) {
|
|
|
22
23
|
export async function rm(branchOrPath, options) {
|
|
23
24
|
// Check if we're in a git repo
|
|
24
25
|
if (!isGitRepo()) {
|
|
25
|
-
|
|
26
|
-
process.exit(1);
|
|
26
|
+
fail(errors.notGitRepo());
|
|
27
27
|
}
|
|
28
28
|
const repoRoot = getRepoRoot();
|
|
29
29
|
const worktrees = listWorktrees(repoRoot);
|
|
@@ -35,26 +35,18 @@ export async function rm(branchOrPath, options) {
|
|
|
35
35
|
// Resolve the worktree
|
|
36
36
|
const resolved = resolveBranchOrPath(branchOrPath, wtList, repoRoot);
|
|
37
37
|
if (!resolved) {
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
for (const wt of wtList) {
|
|
41
|
-
out.log(` • ${wt.branch ?? '(detached)'} → ${wt.path}`);
|
|
42
|
-
}
|
|
43
|
-
process.exit(1);
|
|
38
|
+
const available = wtList.map(w => w.branch ?? w.path);
|
|
39
|
+
fail(errors.worktreeNotFound(branchOrPath, available));
|
|
44
40
|
}
|
|
45
41
|
const { path: wtPath, branch } = resolved;
|
|
46
42
|
// Check if it's the main worktree (the original checkout)
|
|
47
43
|
if (wtPath === repoRoot) {
|
|
48
|
-
|
|
49
|
-
out.info('This is your primary repository checkout.');
|
|
50
|
-
process.exit(1);
|
|
44
|
+
fail(errors.cannotRemoveMainWorktree());
|
|
51
45
|
}
|
|
52
46
|
// Check if dirty
|
|
53
47
|
const dirty = isWorktreeDirty(wtPath);
|
|
54
48
|
if (dirty && !options.force) {
|
|
55
|
-
|
|
56
|
-
out.info('Use --force to remove anyway (changes will be lost).');
|
|
57
|
-
process.exit(1);
|
|
49
|
+
fail(errors.dirtyWorkingTree(branch ?? branchOrPath));
|
|
58
50
|
}
|
|
59
51
|
// Warn and confirm if dirty and force
|
|
60
52
|
if (dirty && options.force && !options.yes) {
|
package/dist/commands/rm.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rm.js","sourceRoot":"","sources":["../../src/commands/rm.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EACL,SAAS,EACT,WAAW,EACX,aAAa,EACb,cAAc,EACd,YAAY,EACZ,eAAe,EACf,gBAAgB,GACjB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,KAAK,GAAG,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"rm.js","sourceRoot":"","sources":["../../src/commands/rm.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/spawn.d.ts
CHANGED
|
@@ -8,9 +8,12 @@ interface SpawnOptions {
|
|
|
8
8
|
new?: boolean;
|
|
9
9
|
path?: string;
|
|
10
10
|
base?: string;
|
|
11
|
+
baseBranch?: string;
|
|
11
12
|
mode?: SecretMode;
|
|
12
13
|
run?: string;
|
|
13
14
|
agent?: string;
|
|
15
|
+
finishOnExit?: boolean;
|
|
16
|
+
dryRun?: boolean;
|
|
14
17
|
}
|
|
15
18
|
export declare function spawn(branch: string, options: SpawnOptions): Promise<void>;
|
|
16
19
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spawn.d.ts","sourceRoot":"","sources":["../../src/commands/spawn.ts"],"names":[],"mappings":"AAAA;;;;GAIG;
|
|
1
|
+
{"version":3,"file":"spawn.d.ts","sourceRoot":"","sources":["../../src/commands/spawn.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAwBH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAGlD,UAAU,YAAY;IACpB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AA6GD,wBAAsB,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CA4MhF"}
|
package/dist/commands/spawn.js
CHANGED
|
@@ -4,16 +4,107 @@
|
|
|
4
4
|
* Create a worktree for a branch with optional secrets handling and hooks.
|
|
5
5
|
*/
|
|
6
6
|
import { existsSync } from 'node:fs';
|
|
7
|
-
import {
|
|
7
|
+
import { spawn as spawnProcess } from 'node:child_process';
|
|
8
|
+
import { isGitRepo, getRepoRoot, getRepoName, branchExists, addWorktree, listWorktrees, runCommand, commandExists, getCurrentBranch, isDetachedHead, getDefaultBranch, } from '../lib/git.js';
|
|
8
9
|
import { getMergedConfig, configExists } from '../lib/config.js';
|
|
9
10
|
import { getDefaultWorktreePath } from '../lib/paths.js';
|
|
10
|
-
import { processSecrets } from '../lib/secrets.js';
|
|
11
|
+
import { processSecrets, generateCopyPlan, formatCopyPlan } from '../lib/secrets.js';
|
|
12
|
+
import { createSessionManifest } from '../lib/session.js';
|
|
11
13
|
import * as out from '../lib/output.js';
|
|
14
|
+
import { fail, errors } from '../lib/errors.js';
|
|
15
|
+
import { finish } from './finish.js';
|
|
16
|
+
/**
|
|
17
|
+
* Run an agent command and wait for it to exit
|
|
18
|
+
* Returns the exit code and whether it was interrupted
|
|
19
|
+
*/
|
|
20
|
+
async function runAgentWithExitHandling(command, cwd) {
|
|
21
|
+
return new Promise((resolve) => {
|
|
22
|
+
const isWindows = process.platform === 'win32';
|
|
23
|
+
const shell = isWindows ? 'cmd.exe' : '/bin/sh';
|
|
24
|
+
const shellArgs = isWindows ? ['/c', command] : ['-c', command];
|
|
25
|
+
let interrupted = false;
|
|
26
|
+
const child = spawnProcess(shell, shellArgs, {
|
|
27
|
+
cwd,
|
|
28
|
+
stdio: 'inherit',
|
|
29
|
+
env: process.env,
|
|
30
|
+
});
|
|
31
|
+
// Handle Ctrl+C gracefully
|
|
32
|
+
const sigintHandler = () => {
|
|
33
|
+
interrupted = true;
|
|
34
|
+
child.kill('SIGINT');
|
|
35
|
+
};
|
|
36
|
+
const sigtermHandler = () => {
|
|
37
|
+
interrupted = true;
|
|
38
|
+
child.kill('SIGTERM');
|
|
39
|
+
};
|
|
40
|
+
process.on('SIGINT', sigintHandler);
|
|
41
|
+
process.on('SIGTERM', sigtermHandler);
|
|
42
|
+
child.on('close', (code) => {
|
|
43
|
+
// Clean up signal handlers
|
|
44
|
+
process.removeListener('SIGINT', sigintHandler);
|
|
45
|
+
process.removeListener('SIGTERM', sigtermHandler);
|
|
46
|
+
resolve({ exitCode: code ?? 1, interrupted });
|
|
47
|
+
});
|
|
48
|
+
child.on('error', () => {
|
|
49
|
+
process.removeListener('SIGINT', sigintHandler);
|
|
50
|
+
process.removeListener('SIGTERM', sigtermHandler);
|
|
51
|
+
resolve({ exitCode: 1, interrupted });
|
|
52
|
+
});
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Show post-agent menu and handle user choice
|
|
57
|
+
*/
|
|
58
|
+
async function showPostAgentMenu(worktreePath, agentExitCode, interrupted) {
|
|
59
|
+
const readline = await import('node:readline');
|
|
60
|
+
// Change to worktree directory for finish command
|
|
61
|
+
process.chdir(worktreePath);
|
|
62
|
+
out.newline();
|
|
63
|
+
out.header('Agent Session Ended');
|
|
64
|
+
if (interrupted) {
|
|
65
|
+
out.log(out.fmt.yellow(' Agent was interrupted (Ctrl+C)'));
|
|
66
|
+
}
|
|
67
|
+
else if (agentExitCode !== 0) {
|
|
68
|
+
out.log(out.fmt.yellow(` Agent exited with error (code ${agentExitCode})`));
|
|
69
|
+
}
|
|
70
|
+
else {
|
|
71
|
+
out.log(out.fmt.green(' Agent exited successfully'));
|
|
72
|
+
}
|
|
73
|
+
out.newline();
|
|
74
|
+
out.log('What would you like to do?');
|
|
75
|
+
out.log(` ${out.fmt.bold('f')}) Finish session (commit, PR, cleanup)`);
|
|
76
|
+
out.log(` ${out.fmt.bold('c')}) Cleanup only (remove worktree)`);
|
|
77
|
+
out.log(` ${out.fmt.bold('n')}) Do nothing (exit)`);
|
|
78
|
+
const rl = readline.createInterface({
|
|
79
|
+
input: process.stdin,
|
|
80
|
+
output: process.stdout,
|
|
81
|
+
});
|
|
82
|
+
const answer = await new Promise((resolve) => {
|
|
83
|
+
rl.question('Choice [f/c/n]: ', (ans) => {
|
|
84
|
+
rl.close();
|
|
85
|
+
resolve(ans.toLowerCase().trim());
|
|
86
|
+
});
|
|
87
|
+
});
|
|
88
|
+
if (answer === 'f' || answer === 'finish') {
|
|
89
|
+
// Run finish in interactive mode
|
|
90
|
+
await finish({});
|
|
91
|
+
}
|
|
92
|
+
else if (answer === 'c' || answer === 'cleanup') {
|
|
93
|
+
// Run finish with cleanup only, skip PR
|
|
94
|
+
await finish({
|
|
95
|
+
skipCommit: true,
|
|
96
|
+
cleanup: true,
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
else {
|
|
100
|
+
out.log(out.fmt.dim('Exiting without cleanup.'));
|
|
101
|
+
out.log(` ${out.fmt.dim('Run')} cry finish ${out.fmt.dim('later to complete the session.')}`);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
12
104
|
export async function spawn(branch, options) {
|
|
13
105
|
// Check if we're in a git repo
|
|
14
106
|
if (!isGitRepo()) {
|
|
15
|
-
|
|
16
|
-
process.exit(1);
|
|
107
|
+
fail(errors.notGitRepo());
|
|
17
108
|
}
|
|
18
109
|
const repoRoot = getRepoRoot();
|
|
19
110
|
const repoName = getRepoName();
|
|
@@ -35,26 +126,70 @@ export async function spawn(branch, options) {
|
|
|
35
126
|
});
|
|
36
127
|
// Check if destination already exists
|
|
37
128
|
if (existsSync(worktreePath)) {
|
|
38
|
-
|
|
39
|
-
out.info('Remove it first or choose a different path with --path');
|
|
40
|
-
process.exit(1);
|
|
129
|
+
fail(errors.destinationExists(worktreePath));
|
|
41
130
|
}
|
|
42
131
|
// Check if worktree already exists for this branch
|
|
43
132
|
const existingWorktrees = listWorktrees(repoRoot);
|
|
44
133
|
const existingForBranch = existingWorktrees.find((w) => w.branch === branch);
|
|
45
134
|
if (existingForBranch) {
|
|
46
|
-
|
|
47
|
-
out.info(`Path: ${existingForBranch.worktree}`);
|
|
48
|
-
out.info('Remove it first with: cry rm ' + branch);
|
|
49
|
-
process.exit(1);
|
|
135
|
+
fail(errors.worktreeAlreadyExists(branch, existingForBranch.worktree));
|
|
50
136
|
}
|
|
51
137
|
// Determine if we need to create the branch
|
|
52
138
|
const needsNewBranch = options.new || !branchExists(branch, repoRoot);
|
|
139
|
+
// Determine base branch with proper fallback chain:
|
|
140
|
+
// 1. User-provided --base-branch option
|
|
141
|
+
// 2. Current branch (if not detached)
|
|
142
|
+
// 3. Default branch (origin/HEAD or main/master)
|
|
143
|
+
// 4. Error if detached HEAD and no fallback
|
|
144
|
+
let baseBranch;
|
|
145
|
+
if (options.baseBranch) {
|
|
146
|
+
baseBranch = options.baseBranch;
|
|
147
|
+
}
|
|
148
|
+
else if (isDetachedHead(repoRoot)) {
|
|
149
|
+
// Try to get default branch as fallback
|
|
150
|
+
const defaultBranch = getDefaultBranch(repoRoot);
|
|
151
|
+
if (defaultBranch) {
|
|
152
|
+
baseBranch = defaultBranch;
|
|
153
|
+
out.warn(`Detached HEAD detected. Using default branch '${defaultBranch}' as base.`);
|
|
154
|
+
}
|
|
155
|
+
else {
|
|
156
|
+
fail(errors.detachedHead());
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
else {
|
|
160
|
+
const currentBranch = getCurrentBranch(repoRoot);
|
|
161
|
+
if (currentBranch) {
|
|
162
|
+
baseBranch = currentBranch;
|
|
163
|
+
}
|
|
164
|
+
else {
|
|
165
|
+
// Fallback to default branch
|
|
166
|
+
const defaultBranch = getDefaultBranch(repoRoot);
|
|
167
|
+
baseBranch = defaultBranch ?? 'main';
|
|
168
|
+
}
|
|
169
|
+
}
|
|
53
170
|
out.header('Creating worktree');
|
|
54
171
|
out.log(` Branch: ${out.fmt.branch(branch)}${needsNewBranch ? out.fmt.gray(' (new)') : ''}`);
|
|
172
|
+
out.log(` Base: ${out.fmt.branch(baseBranch)}`);
|
|
55
173
|
out.log(` Path: ${out.fmt.path(worktreePath)}`);
|
|
56
174
|
out.log(` Mode: ${out.fmt.cyan(mode)}`);
|
|
57
175
|
out.newline();
|
|
176
|
+
// Handle dry-run mode
|
|
177
|
+
if (options.dryRun) {
|
|
178
|
+
out.header('Dry Run - Copy Plan');
|
|
179
|
+
if (mode === 'none') {
|
|
180
|
+
out.log(out.fmt.dim(' Secret mode is "none" — no files will be copied/symlinked'));
|
|
181
|
+
}
|
|
182
|
+
else if (config.include.length === 0) {
|
|
183
|
+
out.log(out.fmt.dim(' No include patterns configured'));
|
|
184
|
+
}
|
|
185
|
+
else {
|
|
186
|
+
const plan = await generateCopyPlan(config.include, repoRoot);
|
|
187
|
+
out.log(formatCopyPlan(plan, mode));
|
|
188
|
+
}
|
|
189
|
+
out.newline();
|
|
190
|
+
out.log(out.fmt.dim('Dry run complete. No changes were made.'));
|
|
191
|
+
return;
|
|
192
|
+
}
|
|
58
193
|
// Create the worktree
|
|
59
194
|
try {
|
|
60
195
|
addWorktree(worktreePath, branch, needsNewBranch, repoRoot);
|
|
@@ -64,6 +199,22 @@ export async function spawn(branch, options) {
|
|
|
64
199
|
out.error(`Failed to create worktree: ${error.message}`);
|
|
65
200
|
process.exit(1);
|
|
66
201
|
}
|
|
202
|
+
// Create session manifest
|
|
203
|
+
const agentChoice = options.agent ?? 'none';
|
|
204
|
+
try {
|
|
205
|
+
const session = createSessionManifest({
|
|
206
|
+
repoRoot,
|
|
207
|
+
branch,
|
|
208
|
+
baseBranch,
|
|
209
|
+
worktreePath,
|
|
210
|
+
agent: agentChoice !== 'none' ? agentChoice : undefined,
|
|
211
|
+
});
|
|
212
|
+
out.success(`Session created: ${out.fmt.dim(session.id)}`);
|
|
213
|
+
}
|
|
214
|
+
catch (error) {
|
|
215
|
+
// Non-fatal: session manifest is helpful but not required
|
|
216
|
+
out.warn(`Could not create session manifest: ${error.message}`);
|
|
217
|
+
}
|
|
67
218
|
// Handle secrets
|
|
68
219
|
if (mode !== 'none' && config.include.length > 0) {
|
|
69
220
|
out.newline();
|
|
@@ -106,22 +257,34 @@ export async function spawn(branch, options) {
|
|
|
106
257
|
}
|
|
107
258
|
}
|
|
108
259
|
// Handle agent launch
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
260
|
+
if (agentChoice === 'claude' || agentChoice === 'cursor') {
|
|
261
|
+
// Determine the actual command to run
|
|
262
|
+
// For 'claude', use config.agentCommand (defaults to 'claude')
|
|
263
|
+
// For 'cursor', use 'cursor' command
|
|
264
|
+
const agentCmd = agentChoice === 'cursor' ? 'cursor' : config.agentCommand;
|
|
112
265
|
out.newline();
|
|
113
266
|
if (commandExists(agentCmd)) {
|
|
114
267
|
out.log(`Launching ${agentCmd}...`);
|
|
115
|
-
|
|
268
|
+
if (options.finishOnExit) {
|
|
269
|
+
// Use special handler that waits for exit and shows menu
|
|
270
|
+
const { exitCode, interrupted } = await runAgentWithExitHandling(agentCmd, worktreePath);
|
|
271
|
+
await showPostAgentMenu(worktreePath, exitCode, interrupted);
|
|
272
|
+
}
|
|
273
|
+
else {
|
|
274
|
+
// Just run the command normally
|
|
275
|
+
await runCommand(agentCmd, worktreePath);
|
|
276
|
+
}
|
|
116
277
|
}
|
|
117
278
|
else {
|
|
118
279
|
out.warn(`Agent command '${agentCmd}' not found.`);
|
|
119
280
|
out.info('Install Claude Code: https://docs.anthropic.com/claude-code');
|
|
120
281
|
}
|
|
121
282
|
}
|
|
122
|
-
// Final summary
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
283
|
+
// Final summary (only if not using finish-on-exit, since finish handles its own output)
|
|
284
|
+
if (!options.finishOnExit || agentChoice === 'none') {
|
|
285
|
+
out.newline();
|
|
286
|
+
out.header('Worktree ready');
|
|
287
|
+
out.log(` ${out.fmt.dim('cd')} ${worktreePath}`);
|
|
288
|
+
}
|
|
126
289
|
}
|
|
127
290
|
//# sourceMappingURL=spawn.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spawn.js","sourceRoot":"","sources":["../../src/commands/spawn.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"spawn.js","sourceRoot":"","sources":["../../src/commands/spawn.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -3,6 +3,10 @@
|
|
|
3
3
|
* cry - Git worktrees made painless for vibecoders
|
|
4
4
|
*
|
|
5
5
|
* A CLI tool for managing git worktrees with parallel AI-agent sessions in mind.
|
|
6
|
+
*
|
|
7
|
+
* Shorthand syntax:
|
|
8
|
+
* cry <name> → cry spawn <name> --new
|
|
9
|
+
* cry <name> claude → cry spawn <name> --new --agent claude
|
|
6
10
|
*/
|
|
7
11
|
export {};
|
|
8
12
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA;;;;;;;;GAQG"}
|