n8n-nodes-claude-code-cli 1.0.4 → 1.0.6
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/nodes/ClaudeCode/transport/SshExecutor.d.ts.map +1 -1
- package/dist/nodes/ClaudeCode/transport/SshExecutor.js +27 -4
- package/dist/nodes/ClaudeCode/transport/SshExecutor.js.map +1 -1
- package/dist/nodes/ClaudeCode/utils/index.d.ts +1 -0
- package/dist/nodes/ClaudeCode/utils/index.d.ts.map +1 -1
- package/dist/nodes/ClaudeCode/utils/index.js +4 -1
- package/dist/nodes/ClaudeCode/utils/index.js.map +1 -1
- package/dist/nodes/ClaudeCode/utils/sshKeyUtils.d.ts +20 -0
- package/dist/nodes/ClaudeCode/utils/sshKeyUtils.d.ts.map +1 -0
- package/dist/nodes/ClaudeCode/utils/sshKeyUtils.js +107 -0
- package/dist/nodes/ClaudeCode/utils/sshKeyUtils.js.map +1 -0
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SshExecutor.d.ts","sourceRoot":"","sources":["../../../../nodes/ClaudeCode/transport/SshExecutor.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACX,mBAAmB,EACnB,0BAA0B,EAC1B,gBAAgB,EAEhB,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"SshExecutor.d.ts","sourceRoot":"","sources":["../../../../nodes/ClaudeCode/transport/SshExecutor.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACX,mBAAmB,EACnB,0BAA0B,EAC1B,gBAAgB,EAEhB,MAAM,wBAAwB,CAAC;AAWhC;;GAEG;AACH,qBAAa,WAAY,YAAW,mBAAmB;IACtD,OAAO,CAAC,WAAW,CAAiB;gBAExB,WAAW,EAAE,OAAO;IAIhC;;OAEG;IACH,OAAO,CAAC,cAAc;IAwCtB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAK1B;;OAEG;IACH,OAAO,CAAC,OAAO,EAAE,0BAA0B,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAyHvE;;OAEG;IACH,cAAc,IAAI,OAAO,CAAC,OAAO,CAAC;CAqElC"}
|
|
@@ -26,13 +26,21 @@ class SshExecutor {
|
|
|
26
26
|
config.password = this.credentials.password;
|
|
27
27
|
}
|
|
28
28
|
else if (this.credentials.authMethod === "privateKey") {
|
|
29
|
+
let privateKey;
|
|
29
30
|
if (this.credentials.privateKey) {
|
|
30
|
-
|
|
31
|
+
const validation = (0, index_js_1.validatePrivateKey)(this.credentials.privateKey);
|
|
32
|
+
if (!validation.valid) {
|
|
33
|
+
throw new Error(`SSH private key error: ${validation.error}`);
|
|
34
|
+
}
|
|
35
|
+
privateKey = (0, index_js_1.normalizePrivateKey)(this.credentials.privateKey);
|
|
31
36
|
}
|
|
32
37
|
else if (this.credentials.privateKeyPath) {
|
|
33
38
|
// Expand ~ to home directory
|
|
34
39
|
const keyPath = this.credentials.privateKeyPath.replace(/^~/, (0, node_os_1.homedir)());
|
|
35
|
-
|
|
40
|
+
privateKey = (0, node_fs_1.readFileSync)(keyPath);
|
|
41
|
+
}
|
|
42
|
+
if (privateKey) {
|
|
43
|
+
config.privateKey = privateKey;
|
|
36
44
|
}
|
|
37
45
|
if (this.credentials.passphrase) {
|
|
38
46
|
config.passphrase = this.credentials.passphrase;
|
|
@@ -55,7 +63,15 @@ class SshExecutor {
|
|
|
55
63
|
return new Promise((resolve) => {
|
|
56
64
|
const startTime = Date.now();
|
|
57
65
|
const remoteCmd = this.buildRemoteCommand(options);
|
|
58
|
-
|
|
66
|
+
let sshConfig;
|
|
67
|
+
try {
|
|
68
|
+
sshConfig = this.buildSshConfig();
|
|
69
|
+
}
|
|
70
|
+
catch (err) {
|
|
71
|
+
const duration = Date.now() - startTime;
|
|
72
|
+
resolve((0, index_js_1.createErrorResult)(err.message, 1, duration));
|
|
73
|
+
return;
|
|
74
|
+
}
|
|
59
75
|
const timeoutMs = options.timeout ? options.timeout * 1000 : 300000;
|
|
60
76
|
let stdout = "";
|
|
61
77
|
let stderr = "";
|
|
@@ -145,7 +161,14 @@ class SshExecutor {
|
|
|
145
161
|
*/
|
|
146
162
|
testConnection() {
|
|
147
163
|
return new Promise((resolve) => {
|
|
148
|
-
|
|
164
|
+
let sshConfig;
|
|
165
|
+
try {
|
|
166
|
+
sshConfig = this.buildSshConfig();
|
|
167
|
+
}
|
|
168
|
+
catch {
|
|
169
|
+
resolve(false);
|
|
170
|
+
return;
|
|
171
|
+
}
|
|
149
172
|
const conn = new ssh2_1.Client();
|
|
150
173
|
let resolved = false;
|
|
151
174
|
const timeout = setTimeout(() => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SshExecutor.js","sourceRoot":"","sources":["../../../../nodes/ClaudeCode/transport/SshExecutor.ts"],"names":[],"mappings":";;;AAAA,+BAAkD;AAClD,qCAAuC;AACvC,qCAAkC;AAOlC,
|
|
1
|
+
{"version":3,"file":"SshExecutor.js","sourceRoot":"","sources":["../../../../nodes/ClaudeCode/transport/SshExecutor.ts"],"names":[],"mappings":";;;AAAA,+BAAkD;AAClD,qCAAuC;AACvC,qCAAkC;AAOlC,gDAQ2B;AAE3B;;GAEG;AACH,MAAa,WAAW;IACf,WAAW,CAAiB;IAEpC,YAAY,WAAoB;QAC/B,IAAI,CAAC,WAAW,GAAG,WAA6B,CAAC;IAClD,CAAC;IAED;;OAEG;IACK,cAAc;QACrB,MAAM,MAAM,GAAkB;YAC7B,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI;YAC3B,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,IAAI,EAAE;YACjC,QAAQ,EAAE,IAAI,CAAC,WAAW,CAAC,QAAQ;SACnC,CAAC;QAEF,IAAI,IAAI,CAAC,WAAW,CAAC,UAAU,KAAK,UAAU,EAAE,CAAC;YAChD,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC;QAC7C,CAAC;aAAM,IAAI,IAAI,CAAC,WAAW,CAAC,UAAU,KAAK,YAAY,EAAE,CAAC;YACzD,IAAI,UAAuC,CAAC;YAE5C,IAAI,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,CAAC;gBACjC,MAAM,UAAU,GAAG,IAAA,6BAAkB,EAAC,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;gBACnE,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;oBACvB,MAAM,IAAI,KAAK,CAAC,0BAA0B,UAAU,CAAC,KAAK,EAAE,CAAC,CAAC;gBAC/D,CAAC;gBACD,UAAU,GAAG,IAAA,8BAAmB,EAAC,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;YAC/D,CAAC;iBAAM,IAAI,IAAI,CAAC,WAAW,CAAC,cAAc,EAAE,CAAC;gBAC5C,6BAA6B;gBAC7B,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,OAAO,CACtD,IAAI,EACJ,IAAA,iBAAO,GAAE,CACT,CAAC;gBACF,UAAU,GAAG,IAAA,sBAAY,EAAC,OAAO,CAAC,CAAC;YACpC,CAAC;YAED,IAAI,UAAU,EAAE,CAAC;gBAChB,MAAM,CAAC,UAAU,GAAG,UAAU,CAAC;YAChC,CAAC;YAED,IAAI,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,CAAC;gBACjC,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC;YACjD,CAAC;QACF,CAAC;QACD,gEAAgE;QAEhE,OAAO,MAAM,CAAC;IACf,CAAC;IAED;;OAEG;IACK,kBAAkB,CAAC,OAAmC;QAC7D,MAAM,YAAY,GAAG,IAAA,uBAAY,EAAC,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;QAC7D,OAAO,IAAA,4BAAiB,EAAC,YAAY,CAAC,CAAC;IACxC,CAAC;IAED;;OAEG;IACH,OAAO,CAAC,OAAmC;QAC1C,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YAC9B,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YAC7B,MAAM,SAAS,GAAG,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;YAEnD,IAAI,SAAwB,CAAC;YAC7B,IAAI,CAAC;gBACJ,SAAS,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;YACnC,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACd,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;gBACxC,OAAO,CAAC,IAAA,4BAAiB,EAAE,GAAa,CAAC,OAAO,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC;gBAChE,OAAO;YACR,CAAC;YAED,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC;YAEpE,IAAI,MAAM,GAAG,EAAE,CAAC;YAChB,IAAI,MAAM,GAAG,EAAE,CAAC;YAChB,IAAI,gBAAgB,GAAG,KAAK,CAAC;YAE7B,MAAM,IAAI,GAAG,IAAI,aAAM,EAAE,CAAC;YAE1B,yBAAyB;YACzB,MAAM,iBAAiB,GAAG,UAAU,CAAC,GAAG,EAAE;gBACzC,IAAI,CAAC,gBAAgB,EAAE,CAAC;oBACvB,gBAAgB,GAAG,IAAI,CAAC;oBACxB,IAAI,CAAC,GAAG,EAAE,CAAC;oBACX,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;oBACxC,OAAO,CAAC,IAAA,4BAAiB,EAAC,wBAAwB,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC;gBACnE,CAAC;YACF,CAAC,EAAE,SAAS,CAAC,CAAC;YAEd,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;gBACrB,kEAAkE;gBAClE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE;oBACpD,IAAI,GAAG,EAAE,CAAC;wBACT,YAAY,CAAC,iBAAiB,CAAC,CAAC;wBAChC,gBAAgB,GAAG,IAAI,CAAC;wBACxB,IAAI,CAAC,GAAG,EAAE,CAAC;wBACX,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;wBACxC,OAAO,CACN,IAAA,4BAAiB,EAAC,mBAAmB,GAAG,CAAC,OAAO,EAAE,EAAE,CAAC,EAAE,QAAQ,CAAC,CAChE,CAAC;wBACF,OAAO;oBACR,CAAC;oBAED,IAAI,QAAQ,GAAkB,IAAI,CAAC;oBACnC,IAAI,YAAY,GAAG,KAAK,CAAC;oBAEzB,MAAM,gBAAgB,GAAG,GAAG,EAAE;wBAC7B,IAAI,YAAY,IAAI,QAAQ,KAAK,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;4BAC5D,YAAY,CAAC,iBAAiB,CAAC,CAAC;4BAChC,gBAAgB,GAAG,IAAI,CAAC;4BACxB,IAAI,CAAC,GAAG,EAAE,CAAC;4BAEX,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;4BACxC,MAAM,IAAI,GAAG,QAAQ,IAAI,CAAC,CAAC;4BAE3B,IAAI,OAAO,CAAC,YAAY,KAAK,MAAM,EAAE,CAAC;gCACrC,MAAM,MAAM,GAAG,IAAA,0BAAe,EAAC,MAAM,CAAC,CAAC;gCACvC,OAAO,CAAC,IAAA,0BAAe,EAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC;4BAC1D,CAAC;iCAAM,CAAC;gCACP,OAAO,CAAC;oCACP,OAAO,EAAE,IAAI,KAAK,CAAC;oCACnB,SAAS,EAAE,EAAE;oCACb,MAAM,EAAE,MAAM;oCACd,QAAQ,EAAE,IAAI;oCACd,QAAQ;oCACR,KAAK,EAAE,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;iCACtC,CAAC,CAAC;4BACJ,CAAC;wBACF,CAAC;oBACF,CAAC,CAAC;oBAEF,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAY,EAAE,EAAE;wBAClC,QAAQ,GAAG,IAAI,IAAI,CAAC,CAAC;wBACrB,gBAAgB,EAAE,CAAC;oBACpB,CAAC,CAAC,CAAC;oBAEH,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;wBACvB,YAAY,GAAG,IAAI,CAAC;wBACpB,4CAA4C;wBAC5C,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;4BACvB,QAAQ,GAAG,CAAC,CAAC;wBACd,CAAC;wBACD,gBAAgB,EAAE,CAAC;oBACpB,CAAC,CAAC,CAAC;oBAEH,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAY,EAAE,EAAE;wBAClC,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;oBAC3B,CAAC,CAAC,CAAC;oBAEH,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAY,EAAE,EAAE;wBACzC,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;oBAC3B,CAAC,CAAC,CAAC;oBAEH,0DAA0D;oBAC1D,8EAA8E;oBAC9E,MAAM,CAAC,GAAG,EAAE,CAAC;gBACd,CAAC,CAAC,CAAC;YACJ,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAU,EAAE,EAAE;gBAC/B,YAAY,CAAC,iBAAiB,CAAC,CAAC;gBAChC,IAAI,CAAC,gBAAgB,EAAE,CAAC;oBACvB,gBAAgB,GAAG,IAAI,CAAC;oBACxB,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;oBACxC,OAAO,CACN,IAAA,4BAAiB,EAChB,yBAAyB,GAAG,CAAC,OAAO,EAAE,EACtC,CAAC,EACD,QAAQ,CACR,CACD,CAAC;gBACH,CAAC;YACF,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACzB,CAAC,CAAC,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,cAAc;QACb,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YAC9B,IAAI,SAAwB,CAAC;YAC7B,IAAI,CAAC;gBACJ,SAAS,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;YACnC,CAAC;YAAC,MAAM,CAAC;gBACR,OAAO,CAAC,KAAK,CAAC,CAAC;gBACf,OAAO;YACR,CAAC;YAED,MAAM,IAAI,GAAG,IAAI,aAAM,EAAE,CAAC;YAC1B,IAAI,QAAQ,GAAG,KAAK,CAAC;YAErB,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE;gBAC/B,IAAI,CAAC,QAAQ,EAAE,CAAC;oBACf,QAAQ,GAAG,IAAI,CAAC;oBAChB,IAAI,CAAC,GAAG,EAAE,CAAC;oBACX,OAAO,CAAC,KAAK,CAAC,CAAC;gBAChB,CAAC;YACF,CAAC,EAAE,KAAK,CAAC,CAAC;YAEV,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;gBACrB,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,IAAI,QAAQ,CAAC;gBAC3D,oCAAoC;gBACpC,IAAI,CAAC,IAAI,CAAC,GAAG,UAAU,YAAY,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE;oBACpE,IAAI,GAAG,EAAE,CAAC;wBACT,YAAY,CAAC,OAAO,CAAC,CAAC;wBACtB,IAAI,CAAC,QAAQ,EAAE,CAAC;4BACf,QAAQ,GAAG,IAAI,CAAC;4BAChB,IAAI,CAAC,GAAG,EAAE,CAAC;4BACX,OAAO,CAAC,KAAK,CAAC,CAAC;wBAChB,CAAC;wBACD,OAAO;oBACR,CAAC;oBAED,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAY,EAAE,EAAE;wBAClC,YAAY,CAAC,OAAO,CAAC,CAAC;wBACtB,IAAI,CAAC,QAAQ,EAAE,CAAC;4BACf,QAAQ,GAAG,IAAI,CAAC;4BAChB,IAAI,CAAC,GAAG,EAAE,CAAC;4BACX,OAAO,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC;wBACrB,CAAC;oBACF,CAAC,CAAC,CAAC;oBAEH,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;wBACvB,YAAY,CAAC,OAAO,CAAC,CAAC;wBACtB,IAAI,CAAC,QAAQ,EAAE,CAAC;4BACf,QAAQ,GAAG,IAAI,CAAC;4BAChB,IAAI,CAAC,GAAG,EAAE,CAAC;4BACX,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,uCAAuC;wBACvD,CAAC;oBACF,CAAC,CAAC,CAAC;oBAEH,0BAA0B;oBAC1B,MAAM,CAAC,GAAG,EAAE,CAAC;gBACd,CAAC,CAAC,CAAC;YACJ,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;gBACrB,YAAY,CAAC,OAAO,CAAC,CAAC;gBACtB,IAAI,CAAC,QAAQ,EAAE,CAAC;oBACf,QAAQ,GAAG,IAAI,CAAC;oBAChB,OAAO,CAAC,KAAK,CAAC,CAAC;gBAChB,CAAC;YACF,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACzB,CAAC,CAAC,CAAC;IACJ,CAAC;CACD;AA9PD,kCA8PC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
export { buildCommand, escapeShellArg, buildShellCommand, } from "./commandBuilder.js";
|
|
2
2
|
export { parseJsonOutput, normalizeOutput, createErrorResult, } from "./outputParser.js";
|
|
3
3
|
export { buildExecutionOptions } from "./optionsBuilder.js";
|
|
4
|
+
export { normalizePrivateKey, validatePrivateKey } from "./sshKeyUtils.js";
|
|
4
5
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../nodes/ClaudeCode/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,YAAY,EACZ,cAAc,EACd,iBAAiB,GACjB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACN,eAAe,EACf,eAAe,EACf,iBAAiB,GACjB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../nodes/ClaudeCode/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,YAAY,EACZ,cAAc,EACd,iBAAiB,GACjB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACN,eAAe,EACf,eAAe,EACf,iBAAiB,GACjB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.buildExecutionOptions = exports.createErrorResult = exports.normalizeOutput = exports.parseJsonOutput = exports.buildShellCommand = exports.escapeShellArg = exports.buildCommand = void 0;
|
|
3
|
+
exports.validatePrivateKey = exports.normalizePrivateKey = exports.buildExecutionOptions = exports.createErrorResult = exports.normalizeOutput = exports.parseJsonOutput = exports.buildShellCommand = exports.escapeShellArg = exports.buildCommand = void 0;
|
|
4
4
|
var commandBuilder_js_1 = require("./commandBuilder.js");
|
|
5
5
|
Object.defineProperty(exports, "buildCommand", { enumerable: true, get: function () { return commandBuilder_js_1.buildCommand; } });
|
|
6
6
|
Object.defineProperty(exports, "escapeShellArg", { enumerable: true, get: function () { return commandBuilder_js_1.escapeShellArg; } });
|
|
@@ -11,4 +11,7 @@ Object.defineProperty(exports, "normalizeOutput", { enumerable: true, get: funct
|
|
|
11
11
|
Object.defineProperty(exports, "createErrorResult", { enumerable: true, get: function () { return outputParser_js_1.createErrorResult; } });
|
|
12
12
|
var optionsBuilder_js_1 = require("./optionsBuilder.js");
|
|
13
13
|
Object.defineProperty(exports, "buildExecutionOptions", { enumerable: true, get: function () { return optionsBuilder_js_1.buildExecutionOptions; } });
|
|
14
|
+
var sshKeyUtils_js_1 = require("./sshKeyUtils.js");
|
|
15
|
+
Object.defineProperty(exports, "normalizePrivateKey", { enumerable: true, get: function () { return sshKeyUtils_js_1.normalizePrivateKey; } });
|
|
16
|
+
Object.defineProperty(exports, "validatePrivateKey", { enumerable: true, get: function () { return sshKeyUtils_js_1.validatePrivateKey; } });
|
|
14
17
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../nodes/ClaudeCode/utils/index.ts"],"names":[],"mappings":";;;AAAA,yDAI6B;AAH5B,iHAAA,YAAY,OAAA;AACZ,mHAAA,cAAc,OAAA;AACd,sHAAA,iBAAiB,OAAA;AAElB,qDAI2B;AAH1B,kHAAA,eAAe,OAAA;AACf,kHAAA,eAAe,OAAA;AACf,oHAAA,iBAAiB,OAAA;AAElB,yDAA4D;AAAnD,0HAAA,qBAAqB,OAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../nodes/ClaudeCode/utils/index.ts"],"names":[],"mappings":";;;AAAA,yDAI6B;AAH5B,iHAAA,YAAY,OAAA;AACZ,mHAAA,cAAc,OAAA;AACd,sHAAA,iBAAiB,OAAA;AAElB,qDAI2B;AAH1B,kHAAA,eAAe,OAAA;AACf,kHAAA,eAAe,OAAA;AACf,oHAAA,iBAAiB,OAAA;AAElB,yDAA4D;AAAnD,0HAAA,qBAAqB,OAAA;AAC9B,mDAA2E;AAAlE,qHAAA,mBAAmB,OAAA;AAAE,oHAAA,kBAAkB,OAAA"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Normalize SSH private key content
|
|
3
|
+
* Fixes common issues from copy/paste operations:
|
|
4
|
+
* - Literal backslash-n sequences (\\n) that should be newlines
|
|
5
|
+
* - Windows line endings (\r\n)
|
|
6
|
+
* - Old Mac line endings (\r)
|
|
7
|
+
* - Leading/trailing whitespace
|
|
8
|
+
* - Spaces that replaced newlines when pasting
|
|
9
|
+
* - Improper line wrapping in base64 content
|
|
10
|
+
*/
|
|
11
|
+
export declare function normalizePrivateKey(key: string): string;
|
|
12
|
+
/**
|
|
13
|
+
* Validate SSH private key format
|
|
14
|
+
* Returns validation result with error message if invalid
|
|
15
|
+
*/
|
|
16
|
+
export declare function validatePrivateKey(key: string): {
|
|
17
|
+
valid: boolean;
|
|
18
|
+
error?: string;
|
|
19
|
+
};
|
|
20
|
+
//# sourceMappingURL=sshKeyUtils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sshKeyUtils.d.ts","sourceRoot":"","sources":["../../../../nodes/ClaudeCode/utils/sshKeyUtils.ts"],"names":[],"mappings":"AAgBA;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CA6CvD;AAaD;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG;IAChD,KAAK,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CACf,CAwCA"}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.normalizePrivateKey = normalizePrivateKey;
|
|
4
|
+
exports.validatePrivateKey = validatePrivateKey;
|
|
5
|
+
/**
|
|
6
|
+
* Supported private key format headers
|
|
7
|
+
*/
|
|
8
|
+
const SUPPORTED_KEY_HEADERS = [
|
|
9
|
+
"-----BEGIN RSA PRIVATE KEY-----",
|
|
10
|
+
"-----BEGIN OPENSSH PRIVATE KEY-----",
|
|
11
|
+
"-----BEGIN PRIVATE KEY-----",
|
|
12
|
+
"-----BEGIN EC PRIVATE KEY-----",
|
|
13
|
+
"-----BEGIN DSA PRIVATE KEY-----",
|
|
14
|
+
];
|
|
15
|
+
/**
|
|
16
|
+
* PEM line length for base64 content
|
|
17
|
+
*/
|
|
18
|
+
const PEM_LINE_LENGTH = 64;
|
|
19
|
+
/**
|
|
20
|
+
* Normalize SSH private key content
|
|
21
|
+
* Fixes common issues from copy/paste operations:
|
|
22
|
+
* - Literal backslash-n sequences (\\n) that should be newlines
|
|
23
|
+
* - Windows line endings (\r\n)
|
|
24
|
+
* - Old Mac line endings (\r)
|
|
25
|
+
* - Leading/trailing whitespace
|
|
26
|
+
* - Spaces that replaced newlines when pasting
|
|
27
|
+
* - Improper line wrapping in base64 content
|
|
28
|
+
*/
|
|
29
|
+
function normalizePrivateKey(key) {
|
|
30
|
+
// Step 1: Convert literal \n sequences to actual newlines
|
|
31
|
+
// This handles cases where JSON/env vars contain literal "\\n"
|
|
32
|
+
let normalized = key.replace(/\\n/g, "\n");
|
|
33
|
+
// Step 2: Normalize Windows and old Mac line endings
|
|
34
|
+
normalized = normalized.replace(/\r\n/g, "\n").replace(/\r/g, "\n");
|
|
35
|
+
// Step 3: Trim overall whitespace
|
|
36
|
+
normalized = normalized.trim();
|
|
37
|
+
// Step 4: Extract header and footer
|
|
38
|
+
const headerMatch = normalized.match(/(-----BEGIN [A-Z0-9 ]+ KEY-----)/);
|
|
39
|
+
const footerMatch = normalized.match(/(-----END [A-Z0-9 ]+ KEY-----)/);
|
|
40
|
+
if (!headerMatch || !footerMatch) {
|
|
41
|
+
// Can't properly parse, return as-is with basic normalization
|
|
42
|
+
return normalized;
|
|
43
|
+
}
|
|
44
|
+
const header = headerMatch[1];
|
|
45
|
+
const footer = footerMatch[1];
|
|
46
|
+
// Step 5: Extract the base64 content between header and footer
|
|
47
|
+
const headerIndex = normalized.indexOf(header);
|
|
48
|
+
const footerIndex = normalized.indexOf(footer);
|
|
49
|
+
if (headerIndex === -1 || footerIndex === -1 || footerIndex <= headerIndex) {
|
|
50
|
+
return normalized;
|
|
51
|
+
}
|
|
52
|
+
let base64Content = normalized.slice(headerIndex + header.length, footerIndex);
|
|
53
|
+
// Step 6: Clean up the base64 content
|
|
54
|
+
// Remove all whitespace (spaces, newlines, tabs) from the base64 content
|
|
55
|
+
base64Content = base64Content.replace(/\s+/g, "");
|
|
56
|
+
// Step 7: Rewrap base64 content at 64 characters per line (PEM standard)
|
|
57
|
+
const wrappedContent = wrapBase64(base64Content, PEM_LINE_LENGTH);
|
|
58
|
+
// Step 8: Reconstruct the key with proper formatting
|
|
59
|
+
return `${header}\n${wrappedContent}\n${footer}`;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Wrap a base64 string at specified line length
|
|
63
|
+
*/
|
|
64
|
+
function wrapBase64(base64, lineLength) {
|
|
65
|
+
const lines = [];
|
|
66
|
+
for (let i = 0; i < base64.length; i += lineLength) {
|
|
67
|
+
lines.push(base64.slice(i, i + lineLength));
|
|
68
|
+
}
|
|
69
|
+
return lines.join("\n");
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Validate SSH private key format
|
|
73
|
+
* Returns validation result with error message if invalid
|
|
74
|
+
*/
|
|
75
|
+
function validatePrivateKey(key) {
|
|
76
|
+
if (!key || key.trim() === "") {
|
|
77
|
+
return { valid: false, error: "Private key is empty" };
|
|
78
|
+
}
|
|
79
|
+
const normalized = normalizePrivateKey(key);
|
|
80
|
+
const hasValidHeader = SUPPORTED_KEY_HEADERS.some((header) => normalized.startsWith(header));
|
|
81
|
+
if (!hasValidHeader) {
|
|
82
|
+
if (normalized.includes("PUBLIC KEY")) {
|
|
83
|
+
return {
|
|
84
|
+
valid: false,
|
|
85
|
+
error: "This appears to be a public key. Please provide a private key.",
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
if (!normalized.startsWith("-----BEGIN")) {
|
|
89
|
+
return {
|
|
90
|
+
valid: false,
|
|
91
|
+
error: "Invalid key format. Key must start with -----BEGIN ... PRIVATE KEY-----",
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
return {
|
|
95
|
+
valid: false,
|
|
96
|
+
error: "Unsupported key format. Supported formats: RSA, OpenSSH, PKCS#8, EC, DSA",
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
if (!normalized.includes("-----END")) {
|
|
100
|
+
return {
|
|
101
|
+
valid: false,
|
|
102
|
+
error: "Key is incomplete. Missing -----END ... PRIVATE KEY----- footer.",
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
return { valid: true };
|
|
106
|
+
}
|
|
107
|
+
//# sourceMappingURL=sshKeyUtils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sshKeyUtils.js","sourceRoot":"","sources":["../../../../nodes/ClaudeCode/utils/sshKeyUtils.ts"],"names":[],"mappings":"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"}
|