claude-code-plus-plus 0.2.0 → 0.2.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/cli/commands/index.js +5 -1
- package/dist/cli/commands/index.js.map +1 -1
- package/dist/cli/commands/start.js +4 -1
- package/dist/cli/commands/start.js.map +1 -1
- package/dist/cli/index.js +18 -3
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/parser.js +8 -3
- package/dist/cli/parser.js.map +1 -1
- package/dist/cli/validators.js +30 -20
- package/dist/cli/validators.js.map +1 -1
- package/dist/config/defaults.js +10 -5
- package/dist/config/defaults.js.map +1 -1
- package/dist/config/index.js +24 -4
- package/dist/config/index.js.map +1 -1
- package/dist/config/loader.js +29 -20
- package/dist/config/loader.js.map +1 -1
- package/dist/config/paths.js +30 -21
- package/dist/config/paths.js.map +1 -1
- package/dist/config/schema.js +6 -2
- package/dist/config/schema.js.map +1 -1
- package/dist/git/index.js +6 -1
- package/dist/git/index.js.map +1 -1
- package/dist/git/worktree.js +18 -13
- package/dist/git/worktree.js.map +1 -1
- package/dist/index.js +41 -6
- package/dist/index.js.map +1 -1
- package/dist/launcher/index.d.ts.map +1 -1
- package/dist/launcher/index.js +60 -26
- package/dist/launcher/index.js.map +1 -1
- package/dist/platform/clipboard.js +22 -15
- package/dist/platform/clipboard.js.map +1 -1
- package/dist/platform/detector.js +37 -22
- package/dist/platform/detector.js.map +1 -1
- package/dist/platform/index.js +42 -4
- package/dist/platform/index.js.map +1 -1
- package/dist/platform/paths.js +61 -48
- package/dist/platform/paths.js.map +1 -1
- package/dist/platform/shell.js +35 -27
- package/dist/platform/shell.js.map +1 -1
- package/dist/sidebar/app.d.ts.map +1 -1
- package/dist/sidebar/app.js +73 -39
- package/dist/sidebar/app.js.map +1 -1
- package/dist/sidebar/index.js +4 -2
- package/dist/sidebar/index.js.map +1 -1
- package/dist/sidebar/input.js +12 -5
- package/dist/sidebar/input.js.map +1 -1
- package/dist/sidebar/render.js +102 -90
- package/dist/sidebar/render.js.map +1 -1
- package/dist/terminal/bar-handler.js +9 -7
- package/dist/terminal/bar-handler.js.map +1 -1
- package/dist/terminal/bar-render.js +6 -2
- package/dist/terminal/bar-render.js.map +1 -1
- package/dist/terminal/index.js +6 -1
- package/dist/terminal/index.js.map +1 -1
- package/dist/tmux/commands.js +18 -11
- package/dist/tmux/commands.js.map +1 -1
- package/dist/tmux/index.js +33 -7
- package/dist/tmux/index.js.map +1 -1
- package/dist/tmux/pane.js +76 -51
- package/dist/tmux/pane.js.map +1 -1
- package/dist/types.js +4 -1
- package/dist/types.js.map +1 -1
- package/dist/utils/async.js +16 -7
- package/dist/utils/async.js.map +1 -1
- package/dist/utils/errors.js +31 -14
- package/dist/utils/errors.js.map +1 -1
- package/dist/utils/id.js +19 -10
- package/dist/utils/id.js.map +1 -1
- package/dist/utils/index.js +65 -6
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/logger.js +17 -10
- package/dist/utils/logger.js.map +1 -1
- package/dist/utils/string.js +22 -10
- package/dist/utils/string.js.map +1 -1
- package/dist/utils/validation.js +28 -13
- package/dist/utils/validation.js.map +1 -1
- package/package.json +4 -4
package/dist/git/index.js
CHANGED
|
@@ -1,5 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
1
2
|
/**
|
|
2
3
|
* Git Module
|
|
3
4
|
*/
|
|
4
|
-
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.createWorktreeManager = exports.WorktreeManager = void 0;
|
|
7
|
+
var worktree_1 = require("./worktree");
|
|
8
|
+
Object.defineProperty(exports, "WorktreeManager", { enumerable: true, get: function () { return worktree_1.WorktreeManager; } });
|
|
9
|
+
Object.defineProperty(exports, "createWorktreeManager", { enumerable: true, get: function () { return worktree_1.createWorktreeManager; } });
|
|
5
10
|
//# sourceMappingURL=index.js.map
|
package/dist/git/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/git/index.ts"],"names":[],"mappings":"AAAA;;GAEG
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/git/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAEH,uCAAoE;AAA3D,2GAAA,eAAe,OAAA;AAAE,iHAAA,qBAAqB,OAAA"}
|
package/dist/git/worktree.js
CHANGED
|
@@ -1,21 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
1
2
|
/**
|
|
2
3
|
* Git Worktree Operations
|
|
3
4
|
*/
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.WorktreeManager = void 0;
|
|
7
|
+
exports.createWorktreeManager = createWorktreeManager;
|
|
8
|
+
const simple_git_1 = require("simple-git");
|
|
9
|
+
const os_1 = require("os");
|
|
10
|
+
const path_1 = require("path");
|
|
11
|
+
const promises_1 = require("fs/promises");
|
|
8
12
|
// ============================================================================
|
|
9
13
|
// Worktree Manager
|
|
10
14
|
// ============================================================================
|
|
11
|
-
|
|
15
|
+
class WorktreeManager {
|
|
12
16
|
repoPath;
|
|
13
17
|
basePath;
|
|
14
18
|
git;
|
|
15
19
|
constructor(repoPath, basePath) {
|
|
16
20
|
this.repoPath = repoPath;
|
|
17
|
-
this.basePath = basePath || join(homedir(), '.claude-worktrees');
|
|
18
|
-
this.git = simpleGit(repoPath);
|
|
21
|
+
this.basePath = basePath || (0, path_1.join)((0, os_1.homedir)(), '.claude-worktrees');
|
|
22
|
+
this.git = (0, simple_git_1.simpleGit)(repoPath);
|
|
19
23
|
}
|
|
20
24
|
/**
|
|
21
25
|
* Generate a unique ID
|
|
@@ -28,10 +32,10 @@ export class WorktreeManager {
|
|
|
28
32
|
*/
|
|
29
33
|
async ensureBaseDir() {
|
|
30
34
|
try {
|
|
31
|
-
await access(this.basePath);
|
|
35
|
+
await (0, promises_1.access)(this.basePath);
|
|
32
36
|
}
|
|
33
37
|
catch {
|
|
34
|
-
await mkdir(this.basePath, { recursive: true });
|
|
38
|
+
await (0, promises_1.mkdir)(this.basePath, { recursive: true });
|
|
35
39
|
}
|
|
36
40
|
}
|
|
37
41
|
/**
|
|
@@ -64,7 +68,7 @@ export class WorktreeManager {
|
|
|
64
68
|
worktrees.push({
|
|
65
69
|
id: isMain ? 'main' : this.generateId(),
|
|
66
70
|
path,
|
|
67
|
-
branch: branch || basename(path),
|
|
71
|
+
branch: branch || (0, path_1.basename)(path),
|
|
68
72
|
isMain,
|
|
69
73
|
});
|
|
70
74
|
}
|
|
@@ -82,7 +86,7 @@ export class WorktreeManager {
|
|
|
82
86
|
async create(branch, newBranch = false) {
|
|
83
87
|
await this.ensureBaseDir();
|
|
84
88
|
const sanitizedBranch = branch.replace(/[^a-zA-Z0-9-_]/g, '-');
|
|
85
|
-
const worktreePath = join(this.basePath, `${basename(this.repoPath)}-${sanitizedBranch}`);
|
|
89
|
+
const worktreePath = (0, path_1.join)(this.basePath, `${(0, path_1.basename)(this.repoPath)}-${sanitizedBranch}`);
|
|
86
90
|
if (newBranch) {
|
|
87
91
|
await this.git.raw(['worktree', 'add', '-b', branch, worktreePath]);
|
|
88
92
|
}
|
|
@@ -110,7 +114,7 @@ export class WorktreeManager {
|
|
|
110
114
|
catch {
|
|
111
115
|
if (force) {
|
|
112
116
|
// Manual cleanup
|
|
113
|
-
await rm(path, { recursive: true, force: true });
|
|
117
|
+
await (0, promises_1.rm)(path, { recursive: true, force: true });
|
|
114
118
|
await this.git.raw(['worktree', 'prune']);
|
|
115
119
|
}
|
|
116
120
|
else {
|
|
@@ -149,10 +153,11 @@ export class WorktreeManager {
|
|
|
149
153
|
}
|
|
150
154
|
}
|
|
151
155
|
}
|
|
156
|
+
exports.WorktreeManager = WorktreeManager;
|
|
152
157
|
// ============================================================================
|
|
153
158
|
// Factory
|
|
154
159
|
// ============================================================================
|
|
155
|
-
|
|
160
|
+
function createWorktreeManager(repoPath, basePath) {
|
|
156
161
|
return new WorktreeManager(repoPath, basePath);
|
|
157
162
|
}
|
|
158
163
|
//# sourceMappingURL=worktree.js.map
|
package/dist/git/worktree.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"worktree.js","sourceRoot":"","sources":["../../src/git/worktree.ts"],"names":[],"mappings":"AAAA;;GAEG;
|
|
1
|
+
{"version":3,"file":"worktree.js","sourceRoot":"","sources":["../../src/git/worktree.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
+
"use strict";
|
|
2
3
|
/**
|
|
3
4
|
* Claude Code++ - Multi-pane terminal for parallel Claude Code agents
|
|
4
5
|
*
|
|
@@ -12,9 +13,43 @@
|
|
|
12
13
|
*
|
|
13
14
|
* Sessions persist across restarts - just reattach to existing tmux session.
|
|
14
15
|
*/
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
16
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
17
|
+
if (k2 === undefined) k2 = k;
|
|
18
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
19
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
20
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
21
|
+
}
|
|
22
|
+
Object.defineProperty(o, k2, desc);
|
|
23
|
+
}) : (function(o, m, k, k2) {
|
|
24
|
+
if (k2 === undefined) k2 = k;
|
|
25
|
+
o[k2] = m[k];
|
|
26
|
+
}));
|
|
27
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
28
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
29
|
+
}) : function(o, v) {
|
|
30
|
+
o["default"] = v;
|
|
31
|
+
});
|
|
32
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
33
|
+
var ownKeys = function(o) {
|
|
34
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
35
|
+
var ar = [];
|
|
36
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
37
|
+
return ar;
|
|
38
|
+
};
|
|
39
|
+
return ownKeys(o);
|
|
40
|
+
};
|
|
41
|
+
return function (mod) {
|
|
42
|
+
if (mod && mod.__esModule) return mod;
|
|
43
|
+
var result = {};
|
|
44
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
45
|
+
__setModuleDefault(result, mod);
|
|
46
|
+
return result;
|
|
47
|
+
};
|
|
48
|
+
})();
|
|
49
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
50
|
+
const path_1 = require("path");
|
|
51
|
+
const tmux = __importStar(require("./tmux"));
|
|
52
|
+
const launcher_1 = require("./launcher");
|
|
18
53
|
// ============================================================================
|
|
19
54
|
// CLI
|
|
20
55
|
// ============================================================================
|
|
@@ -71,7 +106,7 @@ Examples:
|
|
|
71
106
|
}
|
|
72
107
|
// Assume it's a path
|
|
73
108
|
if (!arg.startsWith('-')) {
|
|
74
|
-
repoPath = resolve(arg);
|
|
109
|
+
repoPath = (0, path_1.resolve)(arg);
|
|
75
110
|
}
|
|
76
111
|
}
|
|
77
112
|
// ============================================================================
|
|
@@ -85,9 +120,9 @@ async function main() {
|
|
|
85
120
|
process.exit(1);
|
|
86
121
|
}
|
|
87
122
|
// Generate unique session name for this project
|
|
88
|
-
const sessionName = generateSessionName(repoPath);
|
|
123
|
+
const sessionName = (0, launcher_1.generateSessionName)(repoPath);
|
|
89
124
|
// Launch or attach to session
|
|
90
|
-
const result = await launch({
|
|
125
|
+
const result = await (0, launcher_1.launch)({
|
|
91
126
|
repoPath,
|
|
92
127
|
sessionName,
|
|
93
128
|
forceNew,
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;AACA;;;;;;;;;;;;GAYG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,+BAA+B;AAC/B,6CAA+B;AAC/B,yCAAyD;AAEzD,+EAA+E;AAC/E,MAAM;AACN,+EAA+E;AAE/E,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACnC,IAAI,QAAQ,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;AAC7B,IAAI,QAAQ,GAAG,KAAK,CAAC;AAErB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;IACrC,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IAEpB,IAAI,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;QACrC,OAAO,CAAC,GAAG,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkCf,CAAC,CAAC;QACC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,GAAG,KAAK,WAAW,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;QACxC,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;QAC/B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,GAAG,KAAK,OAAO,EAAE,CAAC;QACpB,QAAQ,GAAG,IAAI,CAAC;QAChB,SAAS;IACX,CAAC;IAED,qBAAqB;IACrB,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACzB,QAAQ,GAAG,IAAA,cAAO,EAAC,GAAG,CAAC,CAAC;IAC1B,CAAC;AACH,CAAC;AAED,+EAA+E;AAC/E,OAAO;AACP,+EAA+E;AAE/E,KAAK,UAAU,IAAI;IACjB,6BAA6B;IAC7B,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;QACxB,OAAO,CAAC,KAAK,CAAC,4CAA4C,CAAC,CAAC;QAC5D,OAAO,CAAC,KAAK,CAAC,qEAAqE,CAAC,CAAC;QACrF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,gDAAgD;IAChD,MAAM,WAAW,GAAG,IAAA,8BAAmB,EAAC,QAAQ,CAAC,CAAC;IAElD,8BAA8B;IAC9B,MAAM,MAAM,GAAG,MAAM,IAAA,iBAAM,EAAC;QAC1B,QAAQ;QACR,WAAW;QACX,QAAQ;KACT,CAAC,CAAC;IAEH,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AAChC,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;IACnB,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC,CAAC;IAC5C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/launcher/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/launcher/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAYH,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,YAAY;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAMD;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAW5D;AAMD;;GAEG;AACH,wBAAsB,MAAM,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC,CAmD1E"}
|
package/dist/launcher/index.js
CHANGED
|
@@ -1,23 +1,57 @@
|
|
|
1
|
+
"use strict";
|
|
1
2
|
/**
|
|
2
3
|
* Session Launcher
|
|
3
4
|
*
|
|
4
5
|
* Creates tmux session, sets up panes, and spawns sidebar process.
|
|
5
6
|
*/
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
7
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
8
|
+
if (k2 === undefined) k2 = k;
|
|
9
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
10
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
11
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
12
|
+
}
|
|
13
|
+
Object.defineProperty(o, k2, desc);
|
|
14
|
+
}) : (function(o, m, k, k2) {
|
|
15
|
+
if (k2 === undefined) k2 = k;
|
|
16
|
+
o[k2] = m[k];
|
|
17
|
+
}));
|
|
18
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
19
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
20
|
+
}) : function(o, v) {
|
|
21
|
+
o["default"] = v;
|
|
22
|
+
});
|
|
23
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
24
|
+
var ownKeys = function(o) {
|
|
25
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
26
|
+
var ar = [];
|
|
27
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
28
|
+
return ar;
|
|
29
|
+
};
|
|
30
|
+
return ownKeys(o);
|
|
31
|
+
};
|
|
32
|
+
return function (mod) {
|
|
33
|
+
if (mod && mod.__esModule) return mod;
|
|
34
|
+
var result = {};
|
|
35
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
36
|
+
__setModuleDefault(result, mod);
|
|
37
|
+
return result;
|
|
38
|
+
};
|
|
39
|
+
})();
|
|
40
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
41
|
+
exports.generateSessionName = generateSessionName;
|
|
42
|
+
exports.launch = launch;
|
|
43
|
+
const path_1 = require("path");
|
|
44
|
+
const fs_1 = require("fs");
|
|
45
|
+
const child_process_1 = require("child_process");
|
|
46
|
+
const os_1 = require("os");
|
|
47
|
+
const tmux = __importStar(require("../tmux"));
|
|
14
48
|
// ============================================================================
|
|
15
49
|
// Session Name Generation
|
|
16
50
|
// ============================================================================
|
|
17
51
|
/**
|
|
18
52
|
* Generate a unique session name from repo path
|
|
19
53
|
*/
|
|
20
|
-
|
|
54
|
+
function generateSessionName(repoPath) {
|
|
21
55
|
const projectName = repoPath.split('/').pop() || 'project';
|
|
22
56
|
// Create a simple hash from the path
|
|
23
57
|
let hash = 0;
|
|
@@ -35,7 +69,7 @@ export function generateSessionName(repoPath) {
|
|
|
35
69
|
/**
|
|
36
70
|
* Launch or attach to a claude-code-plus-plus session
|
|
37
71
|
*/
|
|
38
|
-
|
|
72
|
+
async function launch(options) {
|
|
39
73
|
const { repoPath, sessionName, forceNew = false } = options;
|
|
40
74
|
// Check if session exists
|
|
41
75
|
if (tmux.sessionExists(sessionName)) {
|
|
@@ -89,8 +123,8 @@ function configureTmux(sessionName) {
|
|
|
89
123
|
tmux.setOption('pane-active-border-style', 'fg=colour39');
|
|
90
124
|
// Auto-copy to clipboard on macOS
|
|
91
125
|
try {
|
|
92
|
-
execSync(`tmux bind-key -T copy-mode-vi MouseDragEnd1Pane send-keys -X copy-pipe-and-cancel "pbcopy"`, { stdio: 'ignore' });
|
|
93
|
-
execSync(`tmux bind-key -T copy-mode MouseDragEnd1Pane send-keys -X copy-pipe-and-cancel "pbcopy"`, { stdio: 'ignore' });
|
|
126
|
+
(0, child_process_1.execSync)(`tmux bind-key -T copy-mode-vi MouseDragEnd1Pane send-keys -X copy-pipe-and-cancel "pbcopy"`, { stdio: 'ignore' });
|
|
127
|
+
(0, child_process_1.execSync)(`tmux bind-key -T copy-mode MouseDragEnd1Pane send-keys -X copy-pipe-and-cancel "pbcopy"`, { stdio: 'ignore' });
|
|
94
128
|
}
|
|
95
129
|
catch {
|
|
96
130
|
// Not on macOS or pbcopy not available
|
|
@@ -101,19 +135,19 @@ function configureTmux(sessionName) {
|
|
|
101
135
|
*/
|
|
102
136
|
function getSidebarCommand(repoPath, sessionName, mainPaneId, sidebarPaneId) {
|
|
103
137
|
// Look for sidebar in same directory as launcher
|
|
104
|
-
const srcDir = resolve(__dirname, '..');
|
|
105
|
-
const tsPath = resolve(srcDir, 'sidebar', 'index.ts');
|
|
106
|
-
const jsPath = resolve(srcDir, 'sidebar', 'index.js');
|
|
138
|
+
const srcDir = (0, path_1.resolve)(__dirname, '..');
|
|
139
|
+
const tsPath = (0, path_1.resolve)(srcDir, 'sidebar', 'index.ts');
|
|
140
|
+
const jsPath = (0, path_1.resolve)(srcDir, 'sidebar', 'index.js');
|
|
107
141
|
const args = [
|
|
108
142
|
`"${repoPath}"`,
|
|
109
143
|
`"${sessionName}"`,
|
|
110
144
|
`"${mainPaneId}"`,
|
|
111
145
|
`"${sidebarPaneId}"`,
|
|
112
146
|
].join(' ');
|
|
113
|
-
if (existsSync(tsPath)) {
|
|
147
|
+
if ((0, fs_1.existsSync)(tsPath)) {
|
|
114
148
|
return `npx tsx "${tsPath}" ${args}`;
|
|
115
149
|
}
|
|
116
|
-
else if (existsSync(jsPath)) {
|
|
150
|
+
else if ((0, fs_1.existsSync)(jsPath)) {
|
|
117
151
|
return `node "${jsPath}" ${args}`;
|
|
118
152
|
}
|
|
119
153
|
else {
|
|
@@ -125,7 +159,7 @@ function getSidebarCommand(repoPath, sessionName, mainPaneId, sidebarPaneId) {
|
|
|
125
159
|
* Show welcome screen in main pane
|
|
126
160
|
*/
|
|
127
161
|
function showWelcomeScreen(sessionName, mainPaneId) {
|
|
128
|
-
const tempDir = tmpdir();
|
|
162
|
+
const tempDir = (0, os_1.tmpdir)();
|
|
129
163
|
const welcomeScript = `${tempDir}/claude-pp-welcome-${sessionName}.sh`;
|
|
130
164
|
const content = `#!/bin/bash
|
|
131
165
|
clear
|
|
@@ -176,8 +210,8 @@ cat << 'WELCOME'
|
|
|
176
210
|
WELCOME
|
|
177
211
|
read -r
|
|
178
212
|
`;
|
|
179
|
-
writeFileSync(welcomeScript, content);
|
|
180
|
-
chmodSync(welcomeScript, 0o755);
|
|
213
|
+
(0, fs_1.writeFileSync)(welcomeScript, content);
|
|
214
|
+
(0, fs_1.chmodSync)(welcomeScript, 0o755);
|
|
181
215
|
tmux.runInPane(mainPaneId, welcomeScript);
|
|
182
216
|
}
|
|
183
217
|
/**
|
|
@@ -186,7 +220,7 @@ read -r
|
|
|
186
220
|
function setupBindings(sessionName, sidebarPaneId) {
|
|
187
221
|
// Set up hook to enforce sidebar width on attach
|
|
188
222
|
try {
|
|
189
|
-
execSync(`tmux set-hook -t ${sessionName} client-attached "resize-pane -t ${sidebarPaneId} -x 25"`, { stdio: 'ignore' });
|
|
223
|
+
(0, child_process_1.execSync)(`tmux set-hook -t ${sessionName} client-attached "resize-pane -t ${sidebarPaneId} -x 25"`, { stdio: 'ignore' });
|
|
190
224
|
}
|
|
191
225
|
catch {
|
|
192
226
|
// Ignore
|
|
@@ -194,8 +228,8 @@ function setupBindings(sessionName, sidebarPaneId) {
|
|
|
194
228
|
// Disable scroll wheel in sidebar pane
|
|
195
229
|
const condition = `#{==:#{pane_id},${sidebarPaneId}}`;
|
|
196
230
|
try {
|
|
197
|
-
execSync(`tmux bind-key -T root WheelUpPane if-shell -F "${condition}" "" "copy-mode -e; send-keys -M"`, { stdio: 'ignore' });
|
|
198
|
-
execSync(`tmux bind-key -T root WheelDownPane if-shell -F "${condition}" "" "copy-mode -e; send-keys -M"`, { stdio: 'ignore' });
|
|
231
|
+
(0, child_process_1.execSync)(`tmux bind-key -T root WheelUpPane if-shell -F "${condition}" "" "copy-mode -e; send-keys -M"`, { stdio: 'ignore' });
|
|
232
|
+
(0, child_process_1.execSync)(`tmux bind-key -T root WheelDownPane if-shell -F "${condition}" "" "copy-mode -e; send-keys -M"`, { stdio: 'ignore' });
|
|
199
233
|
}
|
|
200
234
|
catch {
|
|
201
235
|
// Ignore
|
|
@@ -203,21 +237,21 @@ function setupBindings(sessionName, sidebarPaneId) {
|
|
|
203
237
|
// Global key bindings that route to sidebar regardless of active pane
|
|
204
238
|
// Ctrl+T - create new terminal
|
|
205
239
|
try {
|
|
206
|
-
execSync(`tmux bind-key -T root C-t send-keys -t ${sidebarPaneId} C-t`, { stdio: 'ignore' });
|
|
240
|
+
(0, child_process_1.execSync)(`tmux bind-key -T root C-t send-keys -t ${sidebarPaneId} C-t`, { stdio: 'ignore' });
|
|
207
241
|
}
|
|
208
242
|
catch {
|
|
209
243
|
// Ignore
|
|
210
244
|
}
|
|
211
245
|
// Ctrl+G - toggle sidebar collapse
|
|
212
246
|
try {
|
|
213
|
-
execSync(`tmux bind-key -T root C-g send-keys -t ${sidebarPaneId} C-g`, { stdio: 'ignore' });
|
|
247
|
+
(0, child_process_1.execSync)(`tmux bind-key -T root C-g send-keys -t ${sidebarPaneId} C-g`, { stdio: 'ignore' });
|
|
214
248
|
}
|
|
215
249
|
catch {
|
|
216
250
|
// Ignore
|
|
217
251
|
}
|
|
218
252
|
// Ctrl+Q - quit
|
|
219
253
|
try {
|
|
220
|
-
execSync(`tmux bind-key -T root C-q send-keys -t ${sidebarPaneId} C-q`, { stdio: 'ignore' });
|
|
254
|
+
(0, child_process_1.execSync)(`tmux bind-key -T root C-q send-keys -t ${sidebarPaneId} C-q`, { stdio: 'ignore' });
|
|
221
255
|
}
|
|
222
256
|
catch {
|
|
223
257
|
// Ignore
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/launcher/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/launcher/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,15 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
1
2
|
/**
|
|
2
3
|
* Clipboard Operations
|
|
3
4
|
*
|
|
4
5
|
* Platform-specific clipboard copy/paste functionality.
|
|
5
6
|
*/
|
|
6
|
-
|
|
7
|
-
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
exports.isClipboardAvailable = isClipboardAvailable;
|
|
9
|
+
exports.copyToClipboard = copyToClipboard;
|
|
10
|
+
exports.copyToClipboardSync = copyToClipboardSync;
|
|
11
|
+
exports.pasteFromClipboard = pasteFromClipboard;
|
|
12
|
+
exports.pasteFromClipboardSync = pasteFromClipboardSync;
|
|
13
|
+
const child_process_1 = require("child_process");
|
|
14
|
+
const detector_1 = require("./detector");
|
|
8
15
|
/**
|
|
9
16
|
* Get the clipboard command for the current platform
|
|
10
17
|
*/
|
|
11
18
|
function getClipboardCommand() {
|
|
12
|
-
const os = detectPlatform();
|
|
19
|
+
const os = (0, detector_1.detectPlatform)();
|
|
13
20
|
switch (os) {
|
|
14
21
|
case 'darwin':
|
|
15
22
|
return {
|
|
@@ -18,20 +25,20 @@ function getClipboardCommand() {
|
|
|
18
25
|
};
|
|
19
26
|
case 'linux':
|
|
20
27
|
// Try xclip first, then xsel
|
|
21
|
-
if (isCommandAvailable('xclip')) {
|
|
28
|
+
if ((0, detector_1.isCommandAvailable)('xclip')) {
|
|
22
29
|
return {
|
|
23
30
|
copy: ['xclip', '-selection', 'clipboard'],
|
|
24
31
|
paste: ['xclip', '-selection', 'clipboard', '-o'],
|
|
25
32
|
};
|
|
26
33
|
}
|
|
27
|
-
if (isCommandAvailable('xsel')) {
|
|
34
|
+
if ((0, detector_1.isCommandAvailable)('xsel')) {
|
|
28
35
|
return {
|
|
29
36
|
copy: ['xsel', '--clipboard', '--input'],
|
|
30
37
|
paste: ['xsel', '--clipboard', '--output'],
|
|
31
38
|
};
|
|
32
39
|
}
|
|
33
40
|
// Try wl-copy for Wayland
|
|
34
|
-
if (isCommandAvailable('wl-copy')) {
|
|
41
|
+
if ((0, detector_1.isCommandAvailable)('wl-copy')) {
|
|
35
42
|
return {
|
|
36
43
|
copy: ['wl-copy'],
|
|
37
44
|
paste: ['wl-paste'],
|
|
@@ -50,20 +57,20 @@ function getClipboardCommand() {
|
|
|
50
57
|
/**
|
|
51
58
|
* Check if clipboard operations are available
|
|
52
59
|
*/
|
|
53
|
-
|
|
60
|
+
function isClipboardAvailable() {
|
|
54
61
|
return getClipboardCommand() !== null;
|
|
55
62
|
}
|
|
56
63
|
/**
|
|
57
64
|
* Copy text to the system clipboard
|
|
58
65
|
*/
|
|
59
|
-
|
|
66
|
+
async function copyToClipboard(text) {
|
|
60
67
|
const commands = getClipboardCommand();
|
|
61
68
|
if (!commands) {
|
|
62
69
|
throw new Error('Clipboard not available on this platform');
|
|
63
70
|
}
|
|
64
71
|
return new Promise((resolve, reject) => {
|
|
65
72
|
const [cmd, ...args] = commands.copy;
|
|
66
|
-
const proc = spawn(cmd, args, {
|
|
73
|
+
const proc = (0, child_process_1.spawn)(cmd, args, {
|
|
67
74
|
stdio: ['pipe', 'ignore', 'ignore'],
|
|
68
75
|
});
|
|
69
76
|
proc.on('error', (err) => {
|
|
@@ -84,7 +91,7 @@ export async function copyToClipboard(text) {
|
|
|
84
91
|
/**
|
|
85
92
|
* Copy text to clipboard synchronously
|
|
86
93
|
*/
|
|
87
|
-
|
|
94
|
+
function copyToClipboardSync(text) {
|
|
88
95
|
const commands = getClipboardCommand();
|
|
89
96
|
if (!commands) {
|
|
90
97
|
throw new Error('Clipboard not available on this platform');
|
|
@@ -92,7 +99,7 @@ export function copyToClipboardSync(text) {
|
|
|
92
99
|
const [cmd, ...args] = commands.copy;
|
|
93
100
|
const command = [cmd, ...args].join(' ');
|
|
94
101
|
try {
|
|
95
|
-
execSync(command, {
|
|
102
|
+
(0, child_process_1.execSync)(command, {
|
|
96
103
|
input: text,
|
|
97
104
|
stdio: ['pipe', 'ignore', 'ignore'],
|
|
98
105
|
});
|
|
@@ -104,14 +111,14 @@ export function copyToClipboardSync(text) {
|
|
|
104
111
|
/**
|
|
105
112
|
* Paste text from the system clipboard
|
|
106
113
|
*/
|
|
107
|
-
|
|
114
|
+
async function pasteFromClipboard() {
|
|
108
115
|
const commands = getClipboardCommand();
|
|
109
116
|
if (!commands) {
|
|
110
117
|
throw new Error('Clipboard not available on this platform');
|
|
111
118
|
}
|
|
112
119
|
return new Promise((resolve, reject) => {
|
|
113
120
|
const [cmd, ...args] = commands.paste;
|
|
114
|
-
const proc = spawn(cmd, args, {
|
|
121
|
+
const proc = (0, child_process_1.spawn)(cmd, args, {
|
|
115
122
|
stdio: ['ignore', 'pipe', 'ignore'],
|
|
116
123
|
});
|
|
117
124
|
let output = '';
|
|
@@ -134,14 +141,14 @@ export async function pasteFromClipboard() {
|
|
|
134
141
|
/**
|
|
135
142
|
* Paste text from clipboard synchronously
|
|
136
143
|
*/
|
|
137
|
-
|
|
144
|
+
function pasteFromClipboardSync() {
|
|
138
145
|
const commands = getClipboardCommand();
|
|
139
146
|
if (!commands) {
|
|
140
147
|
throw new Error('Clipboard not available on this platform');
|
|
141
148
|
}
|
|
142
149
|
const [cmd, ...args] = commands.paste;
|
|
143
150
|
try {
|
|
144
|
-
const output = execSync([cmd, ...args].join(' '), {
|
|
151
|
+
const output = (0, child_process_1.execSync)([cmd, ...args].join(' '), {
|
|
145
152
|
encoding: 'utf-8',
|
|
146
153
|
stdio: ['ignore', 'pipe', 'ignore'],
|
|
147
154
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clipboard.js","sourceRoot":"","sources":["../../src/platform/clipboard.ts"],"names":[],"mappings":"AAAA;;;;GAIG;
|
|
1
|
+
{"version":3,"file":"clipboard.js","sourceRoot":"","sources":["../../src/platform/clipboard.ts"],"names":[],"mappings":"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"}
|