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/utils/validation.js
CHANGED
|
@@ -1,14 +1,29 @@
|
|
|
1
|
+
"use strict";
|
|
1
2
|
/**
|
|
2
3
|
* Validation Utilities
|
|
3
4
|
*
|
|
4
5
|
* Common validation functions for user input and data.
|
|
5
6
|
*/
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
exports.isValidBranchName = isValidBranchName;
|
|
9
|
+
exports.isValidSessionName = isValidSessionName;
|
|
10
|
+
exports.isValidTmuxSessionName = isValidTmuxSessionName;
|
|
11
|
+
exports.isValidPath = isValidPath;
|
|
12
|
+
exports.isValidTerminalTitle = isValidTerminalTitle;
|
|
13
|
+
exports.sanitizeBranchName = sanitizeBranchName;
|
|
14
|
+
exports.sanitizeSessionName = sanitizeSessionName;
|
|
15
|
+
exports.isDefined = isDefined;
|
|
16
|
+
exports.isNonEmptyString = isNonEmptyString;
|
|
17
|
+
exports.isPositiveInteger = isPositiveInteger;
|
|
18
|
+
exports.isNonNegativeInteger = isNonNegativeInteger;
|
|
19
|
+
exports.assert = assert;
|
|
20
|
+
exports.assertDefined = assertDefined;
|
|
6
21
|
/**
|
|
7
22
|
* Check if a string is a valid git branch name
|
|
8
23
|
* @param name - Branch name to validate
|
|
9
24
|
* @returns true if valid
|
|
10
25
|
*/
|
|
11
|
-
|
|
26
|
+
function isValidBranchName(name) {
|
|
12
27
|
if (!name || name.length === 0) {
|
|
13
28
|
return false;
|
|
14
29
|
}
|
|
@@ -50,7 +65,7 @@ export function isValidBranchName(name) {
|
|
|
50
65
|
* @param name - Session name to validate
|
|
51
66
|
* @returns true if valid
|
|
52
67
|
*/
|
|
53
|
-
|
|
68
|
+
function isValidSessionName(name) {
|
|
54
69
|
if (!name || name.trim().length === 0) {
|
|
55
70
|
return false;
|
|
56
71
|
}
|
|
@@ -69,7 +84,7 @@ export function isValidSessionName(name) {
|
|
|
69
84
|
* @param name - Session name to validate
|
|
70
85
|
* @returns true if valid
|
|
71
86
|
*/
|
|
72
|
-
|
|
87
|
+
function isValidTmuxSessionName(name) {
|
|
73
88
|
if (!name || name.length === 0) {
|
|
74
89
|
return false;
|
|
75
90
|
}
|
|
@@ -93,7 +108,7 @@ export function isValidTmuxSessionName(name) {
|
|
|
93
108
|
* @param path - Path to validate
|
|
94
109
|
* @returns true if valid
|
|
95
110
|
*/
|
|
96
|
-
|
|
111
|
+
function isValidPath(path) {
|
|
97
112
|
if (!path || path.length === 0) {
|
|
98
113
|
return false;
|
|
99
114
|
}
|
|
@@ -110,7 +125,7 @@ export function isValidPath(path) {
|
|
|
110
125
|
* @param title - Title to validate
|
|
111
126
|
* @returns true if valid
|
|
112
127
|
*/
|
|
113
|
-
|
|
128
|
+
function isValidTerminalTitle(title) {
|
|
114
129
|
if (!title || title.trim().length === 0) {
|
|
115
130
|
return false;
|
|
116
131
|
}
|
|
@@ -128,7 +143,7 @@ export function isValidTerminalTitle(title) {
|
|
|
128
143
|
* @param name - Name to sanitize
|
|
129
144
|
* @returns Sanitized branch name
|
|
130
145
|
*/
|
|
131
|
-
|
|
146
|
+
function sanitizeBranchName(name) {
|
|
132
147
|
return name
|
|
133
148
|
.trim()
|
|
134
149
|
.replace(/[~^:?*\[\]\\]/g, '-')
|
|
@@ -144,26 +159,26 @@ export function sanitizeBranchName(name) {
|
|
|
144
159
|
* @param name - Name to sanitize
|
|
145
160
|
* @returns Sanitized session name
|
|
146
161
|
*/
|
|
147
|
-
|
|
162
|
+
function sanitizeSessionName(name) {
|
|
148
163
|
// eslint-disable-next-line no-control-regex
|
|
149
164
|
return name.trim().replace(/[\x00-\x1f\x7f]/g, '').slice(0, 100);
|
|
150
165
|
}
|
|
151
166
|
/**
|
|
152
167
|
* Validate that a value is defined and not null
|
|
153
168
|
*/
|
|
154
|
-
|
|
169
|
+
function isDefined(value) {
|
|
155
170
|
return value !== null && value !== undefined;
|
|
156
171
|
}
|
|
157
172
|
/**
|
|
158
173
|
* Validate that a string is not empty
|
|
159
174
|
*/
|
|
160
|
-
|
|
175
|
+
function isNonEmptyString(value) {
|
|
161
176
|
return typeof value === 'string' && value.length > 0;
|
|
162
177
|
}
|
|
163
178
|
/**
|
|
164
179
|
* Validate that a value is a positive integer
|
|
165
180
|
*/
|
|
166
|
-
|
|
181
|
+
function isPositiveInteger(value) {
|
|
167
182
|
return (typeof value === 'number' &&
|
|
168
183
|
Number.isInteger(value) &&
|
|
169
184
|
value > 0);
|
|
@@ -171,7 +186,7 @@ export function isPositiveInteger(value) {
|
|
|
171
186
|
/**
|
|
172
187
|
* Validate that a value is a non-negative integer
|
|
173
188
|
*/
|
|
174
|
-
|
|
189
|
+
function isNonNegativeInteger(value) {
|
|
175
190
|
return (typeof value === 'number' &&
|
|
176
191
|
Number.isInteger(value) &&
|
|
177
192
|
value >= 0);
|
|
@@ -179,7 +194,7 @@ export function isNonNegativeInteger(value) {
|
|
|
179
194
|
/**
|
|
180
195
|
* Assert that a condition is true, throwing if not
|
|
181
196
|
*/
|
|
182
|
-
|
|
197
|
+
function assert(condition, message = 'Assertion failed') {
|
|
183
198
|
if (!condition) {
|
|
184
199
|
throw new Error(message);
|
|
185
200
|
}
|
|
@@ -187,7 +202,7 @@ export function assert(condition, message = 'Assertion failed') {
|
|
|
187
202
|
/**
|
|
188
203
|
* Assert that a value is defined, returning it
|
|
189
204
|
*/
|
|
190
|
-
|
|
205
|
+
function assertDefined(value, message = 'Value is not defined') {
|
|
191
206
|
if (value === null || value === undefined) {
|
|
192
207
|
throw new Error(message);
|
|
193
208
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validation.js","sourceRoot":"","sources":["../../src/utils/validation.ts"],"names":[],"mappings":"AAAA;;;;GAIG;
|
|
1
|
+
{"version":3,"file":"validation.js","sourceRoot":"","sources":["../../src/utils/validation.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "claude-code-plus-plus",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.1",
|
|
4
4
|
"description": "Multi-pane terminal interface for parallel Claude Code agents with git worktree isolation",
|
|
5
|
-
"type": "
|
|
5
|
+
"type": "commonjs",
|
|
6
6
|
"main": "dist/index.js",
|
|
7
7
|
"bin": {
|
|
8
8
|
"claude++": "./dist/index.js",
|
|
@@ -35,8 +35,8 @@
|
|
|
35
35
|
},
|
|
36
36
|
"devDependencies": {
|
|
37
37
|
"@types/node": "^22.10.0",
|
|
38
|
-
"
|
|
39
|
-
"
|
|
38
|
+
"tsx": "^4.19.0",
|
|
39
|
+
"typescript": "^5.6.0"
|
|
40
40
|
},
|
|
41
41
|
"engines": {
|
|
42
42
|
"node": ">=18.0.0"
|