@intentic/providers 1.34.0 → 1.36.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.
- package/dist/core/inputs.d.ts +4 -0
- package/dist/core/inputs.d.ts.map +1 -1
- package/dist/core/inputs.js +2 -0
- package/dist/core/inputs.js.map +1 -1
- package/dist/core/ssh.d.ts +2 -0
- package/dist/core/ssh.d.ts.map +1 -1
- package/dist/core/ssh.js +155 -68
- package/dist/core/ssh.js.map +1 -1
- package/package.json +5 -5
package/dist/core/inputs.d.ts
CHANGED
|
@@ -6,6 +6,10 @@ export declare const sshSchema: z.ZodObject<{
|
|
|
6
6
|
user: z.ZodString;
|
|
7
7
|
sshKey: z.ZodString;
|
|
8
8
|
port: z.ZodDefault<z.ZodNumber>;
|
|
9
|
+
via: z.ZodDefault<z.ZodEnum<{
|
|
10
|
+
direct: "direct";
|
|
11
|
+
cloudflared: "cloudflared";
|
|
12
|
+
}>>;
|
|
9
13
|
}, z.core.$strip>;
|
|
10
14
|
export declare const parseInputs: <S extends z.ZodType>(schema: S, inputs: ResolvedInputs, label: string) => z.infer<S>;
|
|
11
15
|
export declare const parseResponse: <S extends z.ZodType>(schema: S, value: unknown, label: string) => z.infer<S>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inputs.d.ts","sourceRoot":"","sources":["../../src/core/inputs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"inputs.d.ts","sourceRoot":"","sources":["../../src/core/inputs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAO1C,eAAO,MAAM,SAAS;;;;;;;;;iBAMpB,CAAC;AAOH,eAAO,MAAM,WAAW,GAAI,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,QAAQ,CAAC,EAAE,QAAQ,cAAc,EAAE,OAAO,MAAM,KAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAM5G,CAAC;AAMF,eAAO,MAAM,aAAa,GAAI,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,QAAQ,CAAC,EAAE,OAAO,OAAO,EAAE,OAAO,MAAM,KAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAMtG,CAAC;AAGF,eAAO,MAAM,SAAS,GAAI,QAAQ,CAAC,CAAC,KAAK,CAAC,OAAO,SAAS,CAAC,KAAG,SAM5D,CAAC;AAQH,eAAO,MAAM,WAAW,GAAI,YAAY,MAAM,KAAG;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAG/E,CAAC;AAMH,eAAO,MAAM,aAAa,GAAI,MAAM;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,KAAG,MACxC,CAAC"}
|
package/dist/core/inputs.js
CHANGED
|
@@ -4,6 +4,7 @@ export const sshSchema = z.object({
|
|
|
4
4
|
user: z.string(),
|
|
5
5
|
sshKey: z.string(),
|
|
6
6
|
port: z.number().default(22),
|
|
7
|
+
via: z.enum(["direct", "cloudflared"]).default("direct"),
|
|
7
8
|
});
|
|
8
9
|
const issues = (error) => error.issues.map((issue) => `${issue.path.join(".")} ${issue.message}`).join("; ");
|
|
9
10
|
export const parseInputs = (schema, inputs, label) => {
|
|
@@ -25,6 +26,7 @@ export const sshTarget = (parsed) => ({
|
|
|
25
26
|
user: parsed.user,
|
|
26
27
|
privateKey: parsed.sshKey,
|
|
27
28
|
port: parsed.port,
|
|
29
|
+
via: parsed.via,
|
|
28
30
|
});
|
|
29
31
|
export const gitProvider = (forgejoUrl) => ({
|
|
30
32
|
domain: forgejoUrl.replace(/^https?:\/\//, "").replace(/\/+$/, ""),
|
package/dist/core/inputs.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inputs.js","sourceRoot":"","sources":["../../src/core/inputs.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"inputs.js","sourceRoot":"","sources":["../../src/core/inputs.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAQxB,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,CAAC,MAAM,CAAC;IAC9B,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IACnB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;IAClB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;IAC5B,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC;CAC3D,CAAC,CAAC;AAEH,MAAM,MAAM,GAAG,CAAC,KAAiB,EAAU,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAKjI,MAAM,CAAC,MAAM,WAAW,GAAG,CAAsB,MAAS,EAAE,MAAsB,EAAE,KAAa,EAAc,EAAE;IAC7G,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IACxC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QAClB,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,sBAAsB,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAC1E,CAAC;IACD,OAAO,MAAM,CAAC,IAAI,CAAC;AACvB,CAAC,CAAC;AAMF,MAAM,CAAC,MAAM,aAAa,GAAG,CAAsB,MAAS,EAAE,KAAc,EAAE,KAAa,EAAc,EAAE;IACvG,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IACvC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QAClB,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,qCAAqC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACzF,CAAC;IACD,OAAO,MAAM,CAAC,IAAI,CAAC;AACvB,CAAC,CAAC;AAGF,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,MAAiC,EAAa,EAAE,CAAC,CAAC;IACxE,OAAO,EAAE,MAAM,CAAC,OAAO;IACvB,IAAI,EAAE,MAAM,CAAC,IAAI;IACjB,UAAU,EAAE,MAAM,CAAC,MAAM;IACzB,IAAI,EAAE,MAAM,CAAC,IAAI;IACjB,GAAG,EAAE,MAAM,CAAC,GAAG;CAClB,CAAC,CAAC;AAQH,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,UAAkB,EAAsC,EAAE,CAAC,CAAC;IACpF,MAAM,EAAE,UAAU,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;IAClE,KAAK,EAAE,UAAU,CAAC,UAAU,CAAC,UAAU,CAAC;CAC3C,CAAC,CAAC;AAMH,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,IAAwE,EAAU,EAAE,CAC9G,GAAG,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC"}
|
package/dist/core/ssh.d.ts
CHANGED
|
@@ -14,9 +14,11 @@ export interface SshTarget {
|
|
|
14
14
|
readonly user: string;
|
|
15
15
|
readonly privateKey: string;
|
|
16
16
|
readonly port: number;
|
|
17
|
+
readonly via?: "direct" | "cloudflared";
|
|
17
18
|
}
|
|
18
19
|
export interface SshExecutor {
|
|
19
20
|
readonly connect: (target: SshTarget) => Promise<SshSession>;
|
|
21
|
+
readonly dispose?: () => Promise<void>;
|
|
20
22
|
}
|
|
21
23
|
export interface HostKeyStore {
|
|
22
24
|
readonly get: (host: string, port: number) => Promise<string | undefined>;
|
package/dist/core/ssh.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ssh.d.ts","sourceRoot":"","sources":["../../src/core/ssh.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ssh.d.ts","sourceRoot":"","sources":["../../src/core/ssh.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,SAAS;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,UAAU;IACvB,QAAQ,CAAC,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,SAAS,CAAC,CAAC;IACvD,QAAQ,CAAC,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAKtC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7E,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC9E;AAED,MAAM,WAAW,SAAS;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAItB,QAAQ,CAAC,GAAG,CAAC,EAAE,QAAQ,GAAG,aAAa,CAAC;CAC3C;AAKD,MAAM,WAAW,WAAW;IACxB,QAAQ,CAAC,OAAO,EAAE,CAAC,MAAM,EAAE,SAAS,KAAK,OAAO,CAAC,UAAU,CAAC,CAAC;IAC7D,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC1C;AAKD,MAAM,WAAW,YAAY;IACzB,QAAQ,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IAC1E,QAAQ,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5E;AAKD,eAAO,MAAM,oBAAoB,QAAO,YAUvC,CAAC;AAKF,eAAO,MAAM,aAAa,GAAU,OAAO,YAAY,EAAE,MAAM,MAAM,EAAE,MAAM,MAAM,EAAE,WAAW,MAAM,KAAG,OAAO,CAAC,IAAI,GAAG,UAAU,CAOjI,CAAC;AA0FF,eAAO,MAAM,iBAAiB,GAAI,QAAO,YAAqC,KAAG,WAsHhF,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,WAAiC,CAAC"}
|
package/dist/core/ssh.js
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { spawn } from "node:child_process";
|
|
2
|
+
import { createServer, connect as tcpConnect } from "node:net";
|
|
1
3
|
import { Client } from "ssh2";
|
|
2
4
|
export const inMemoryHostKeyStore = () => {
|
|
3
5
|
const keys = new Map();
|
|
@@ -23,75 +25,160 @@ const collect = (stream, sink) => {
|
|
|
23
25
|
sink.value += chunk.toString("utf8");
|
|
24
26
|
});
|
|
25
27
|
};
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
28
|
+
const delay = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
|
|
29
|
+
const reserveLocalPort = () => new Promise((resolve, reject) => {
|
|
30
|
+
const probe = createServer();
|
|
31
|
+
probe.once("error", reject);
|
|
32
|
+
probe.listen(0, "127.0.0.1", () => {
|
|
33
|
+
const address = probe.address();
|
|
34
|
+
const port = typeof address === "object" && address !== null ? address.port : 0;
|
|
35
|
+
probe.close(() => resolve(port));
|
|
36
|
+
});
|
|
37
|
+
});
|
|
38
|
+
const tcpProbe = (port) => new Promise((resolve) => {
|
|
39
|
+
const socket = tcpConnect({ host: "127.0.0.1", port });
|
|
40
|
+
socket.once("connect", () => {
|
|
41
|
+
socket.destroy();
|
|
42
|
+
resolve(true);
|
|
43
|
+
});
|
|
44
|
+
socket.once("error", () => {
|
|
45
|
+
socket.destroy();
|
|
46
|
+
resolve(false);
|
|
47
|
+
});
|
|
48
|
+
});
|
|
49
|
+
const waitForPort = async (port, failure, timeoutMs = 20000) => {
|
|
50
|
+
const deadline = Date.now() + timeoutMs;
|
|
51
|
+
for (;;) {
|
|
52
|
+
const reason = failure();
|
|
53
|
+
if (reason !== undefined) {
|
|
54
|
+
throw new Error(`cloudflared access exited before its local forwarder came up: ${reason}`);
|
|
55
|
+
}
|
|
56
|
+
if (await tcpProbe(port)) {
|
|
57
|
+
return;
|
|
58
|
+
}
|
|
59
|
+
if (Date.now() > deadline) {
|
|
60
|
+
throw new Error(`cloudflared local forwarder on 127.0.0.1:${port} did not come up within ${timeoutMs}ms`);
|
|
61
|
+
}
|
|
62
|
+
await delay(150);
|
|
63
|
+
}
|
|
64
|
+
};
|
|
65
|
+
const startCloudflaredForwarder = async (hostname) => {
|
|
66
|
+
const port = await reserveLocalPort();
|
|
67
|
+
const child = spawn("cloudflared", ["access", "tcp", "--hostname", hostname, "--url", `127.0.0.1:${port}`], { stdio: "ignore" });
|
|
68
|
+
let exit;
|
|
69
|
+
child.once("error", (error) => {
|
|
70
|
+
exit = `spawn failed: ${error.message}`;
|
|
71
|
+
});
|
|
72
|
+
child.once("exit", (code, signal) => {
|
|
73
|
+
exit = `exited (code ${code ?? "?"}, signal ${signal ?? "none"})`;
|
|
74
|
+
});
|
|
75
|
+
try {
|
|
76
|
+
await waitForPort(port, () => exit);
|
|
77
|
+
}
|
|
78
|
+
catch (error) {
|
|
79
|
+
child.kill();
|
|
80
|
+
throw error;
|
|
81
|
+
}
|
|
82
|
+
return { port, child };
|
|
83
|
+
};
|
|
84
|
+
export const createSshExecutor = (store = inMemoryHostKeyStore()) => {
|
|
85
|
+
const forwarders = new Map();
|
|
86
|
+
const dial = async (target) => {
|
|
87
|
+
if (target.via !== "cloudflared") {
|
|
88
|
+
return { host: target.address, port: target.port };
|
|
89
|
+
}
|
|
90
|
+
let forwarder = forwarders.get(target.address);
|
|
91
|
+
if (forwarder === undefined) {
|
|
92
|
+
forwarder = startCloudflaredForwarder(target.address);
|
|
93
|
+
forwarders.set(target.address, forwarder);
|
|
94
|
+
forwarder.catch(() => forwarders.delete(target.address));
|
|
95
|
+
}
|
|
96
|
+
return { host: "127.0.0.1", port: (await forwarder).port };
|
|
97
|
+
};
|
|
98
|
+
return {
|
|
99
|
+
connect: async (target) => {
|
|
100
|
+
const endpoint = await dial(target);
|
|
101
|
+
return new Promise((resolve, reject) => {
|
|
102
|
+
const client = new Client();
|
|
103
|
+
client.on("error", reject);
|
|
104
|
+
client.on("ready", () => {
|
|
105
|
+
client.removeListener("error", reject);
|
|
106
|
+
resolve({
|
|
107
|
+
exec: (command) => new Promise((resolveExec, rejectExec) => {
|
|
108
|
+
client.exec(command, (error, stream) => {
|
|
109
|
+
if (error !== undefined) {
|
|
110
|
+
rejectExec(error);
|
|
111
|
+
return;
|
|
112
|
+
}
|
|
113
|
+
const stdout = { value: "" };
|
|
114
|
+
const stderr = { value: "" };
|
|
115
|
+
let code = 0;
|
|
116
|
+
collect(stream, stdout);
|
|
117
|
+
collect(stream.stderr, stderr);
|
|
118
|
+
stream.on("exit", (exitCode) => {
|
|
119
|
+
code = exitCode ?? 0;
|
|
120
|
+
});
|
|
121
|
+
stream.on("close", () => {
|
|
122
|
+
resolveExec({ stdout: stdout.value, stderr: stderr.value, code });
|
|
123
|
+
});
|
|
124
|
+
});
|
|
125
|
+
}),
|
|
126
|
+
dispose: () => new Promise((resolveDispose) => {
|
|
127
|
+
client.on("close", () => {
|
|
128
|
+
resolveDispose();
|
|
129
|
+
});
|
|
130
|
+
client.end();
|
|
131
|
+
}),
|
|
132
|
+
download: (remotePath, localPath) => new Promise((resolveTransfer, rejectTransfer) => {
|
|
133
|
+
client.sftp((sftpError, sftp) => {
|
|
134
|
+
if (sftpError) {
|
|
135
|
+
rejectTransfer(sftpError);
|
|
136
|
+
return;
|
|
137
|
+
}
|
|
138
|
+
sftp.fastGet(remotePath, localPath, (getError) => (getError ? rejectTransfer(getError) : resolveTransfer()));
|
|
139
|
+
});
|
|
140
|
+
}),
|
|
141
|
+
upload: (localPath, remotePath) => new Promise((resolveTransfer, rejectTransfer) => {
|
|
142
|
+
client.sftp((sftpError, sftp) => {
|
|
143
|
+
if (sftpError) {
|
|
144
|
+
rejectTransfer(sftpError);
|
|
145
|
+
return;
|
|
146
|
+
}
|
|
147
|
+
sftp.fastPut(localPath, remotePath, (putError) => (putError ? rejectTransfer(putError) : resolveTransfer()));
|
|
148
|
+
});
|
|
149
|
+
}),
|
|
74
150
|
});
|
|
75
|
-
})
|
|
151
|
+
});
|
|
152
|
+
client.connect({
|
|
153
|
+
host: endpoint.host,
|
|
154
|
+
port: endpoint.port,
|
|
155
|
+
username: target.user,
|
|
156
|
+
privateKey: target.privateKey,
|
|
157
|
+
hostVerifier: (key, callback) => {
|
|
158
|
+
verifyHostKey(store, target.address, target.port, key.toString("base64"))
|
|
159
|
+
.then((outcome) => {
|
|
160
|
+
if (outcome === "mismatch") {
|
|
161
|
+
reject(new Error(`host key mismatch for ${target.address}:${target.port} — refusing to connect (possible MITM, or the host was rebuilt; remove its entry from .known-hosts.json to re-trust)`));
|
|
162
|
+
}
|
|
163
|
+
callback(outcome === "ok");
|
|
164
|
+
})
|
|
165
|
+
.catch(reject);
|
|
166
|
+
},
|
|
167
|
+
});
|
|
76
168
|
});
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
.catch(reject);
|
|
92
|
-
},
|
|
93
|
-
});
|
|
94
|
-
}),
|
|
95
|
-
});
|
|
169
|
+
},
|
|
170
|
+
dispose: async () => {
|
|
171
|
+
const pending = [...forwarders.values()];
|
|
172
|
+
forwarders.clear();
|
|
173
|
+
await Promise.all(pending.map(async (forwarder) => {
|
|
174
|
+
try {
|
|
175
|
+
(await forwarder).child.kill();
|
|
176
|
+
}
|
|
177
|
+
catch {
|
|
178
|
+
}
|
|
179
|
+
}));
|
|
180
|
+
},
|
|
181
|
+
};
|
|
182
|
+
};
|
|
96
183
|
export const sshExecutor = createSshExecutor();
|
|
97
184
|
//# sourceMappingURL=ssh.js.map
|
package/dist/core/ssh.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ssh.js","sourceRoot":"","sources":["../../src/core/ssh.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ssh.js","sourceRoot":"","sources":["../../src/core/ssh.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@intentic/providers",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.36.0",
|
|
4
4
|
"description": "",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -33,16 +33,16 @@
|
|
|
33
33
|
"ssh2": "1.17.0",
|
|
34
34
|
"tslib": "2.8.1",
|
|
35
35
|
"zod": "4.4.3",
|
|
36
|
-
"@intentic/
|
|
37
|
-
"@intentic/
|
|
36
|
+
"@intentic/graph": "1.36.0",
|
|
37
|
+
"@intentic/engine": "1.36.0"
|
|
38
38
|
},
|
|
39
39
|
"devDependencies": {
|
|
40
40
|
"@types/node": "24.13.2",
|
|
41
41
|
"@types/ssh2": "1.15.5",
|
|
42
42
|
"typescript": "5.9.3",
|
|
43
43
|
"vitest": "4.1.9",
|
|
44
|
-
"@intentic/
|
|
45
|
-
"@intentic/
|
|
44
|
+
"@intentic/tsconfig": "0.0.0",
|
|
45
|
+
"@intentic/sdk": "1.36.0"
|
|
46
46
|
},
|
|
47
47
|
"scripts": {
|
|
48
48
|
"build": "tsc",
|