@grackle-ai/adapter-ssh 0.131.0 → 0.132.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/README.md +9 -9
- package/dist/ssh.d.ts.map +1 -1
- package/dist/ssh.js +46 -20
- package/dist/ssh.js.map +1 -1
- package/package.json +5 -4
package/README.md
CHANGED
|
@@ -18,15 +18,15 @@ The SSH adapter provisions PowerLine on a remote host, opens an SSH tunnel for g
|
|
|
18
18
|
|
|
19
19
|
## Configuration
|
|
20
20
|
|
|
21
|
-
| Field
|
|
22
|
-
|
|
23
|
-
| `host`
|
|
24
|
-
| `user`
|
|
25
|
-
| `sshPort`
|
|
26
|
-
| `identityFile` | `string`
|
|
27
|
-
| `sshOptions`
|
|
28
|
-
| `localPort`
|
|
29
|
-
| `env`
|
|
21
|
+
| Field | Type | Default | Description |
|
|
22
|
+
| -------------- | ------------------------ | --------------- | ----------------------------------- |
|
|
23
|
+
| `host` | `string` | _required_ | Remote hostname or IP |
|
|
24
|
+
| `user` | `string` | current OS user | SSH username |
|
|
25
|
+
| `sshPort` | `number` | `22` | SSH port |
|
|
26
|
+
| `identityFile` | `string` | — | Path to SSH private key |
|
|
27
|
+
| `sshOptions` | `Record<string, string>` | — | Extra SSH `-o Key=Value` options |
|
|
28
|
+
| `localPort` | `number` | auto | Override local tunnel port |
|
|
29
|
+
| `env` | `Record<string, string>` | — | Extra env vars for remote PowerLine |
|
|
30
30
|
|
|
31
31
|
## Prerequisites
|
|
32
32
|
|
package/dist/ssh.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ssh.d.ts","sourceRoot":"","sources":["../src/ssh.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"ssh.d.ts","sourceRoot":"","sources":["../src/ssh.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,kBAAkB,EAClB,qBAAqB,EACrB,mBAAmB,EACnB,cAAc,EACd,mBAAmB,EAEpB,MAAM,yBAAyB,CAAC;AA8BjC,8CAA8C;AAC9C,MAAM,WAAW,oBAAqB,SAAQ,qBAAqB;IACjE,gDAAgD;IAChD,IAAI,EAAE,MAAM,CAAC;IACb,sDAAsD;IACtD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,oDAAoD;IACpD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,uCAAuC;IACvC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,kDAAkD;IAClD,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC,wEAAwE;IACxE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,0EAA0E;IAC1E,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC9B;AAqJD,mFAAmF;AACnF,qBAAa,UAAW,YAAW,kBAAkB;IAC5C,IAAI,EAAE,MAAM,CAAS;IAC5B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAe;IACtC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAgC;IACxD,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAAgB;gBAErC,IAAI,GAAE,mBAAwB;IAMjD,sFAAsF;IACxE,SAAS,CACrB,aAAa,EAAE,MAAM,EACrB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,cAAc,EAAE,MAAM,GACrB,cAAc,CAAC,cAAc,CAAC;IAsDjC;;;;;;;;OAQG;IACW,SAAS,CACrB,aAAa,EAAE,MAAM,EACrB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,cAAc,EAAE,MAAM,GACrB,cAAc,CAAC,cAAc,CAAC;IAyCjC,uDAAuD;IAC1C,OAAO,CAClB,aAAa,EAAE,MAAM,EACrB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,cAAc,EAAE,MAAM,GACrB,OAAO,CAAC,mBAAmB,CAAC;IAQ/B,kEAAkE;IACrD,UAAU,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI7D,8DAA8D;IACjD,IAAI,CAAC,aAAa,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAKxF,yEAAyE;IAC5D,OAAO,CAAC,aAAa,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAK3F,2EAA2E;IAC9D,WAAW,CAAC,UAAU,EAAE,mBAAmB,GAAG,OAAO,CAAC,OAAO,CAAC;CAG5E"}
|
package/dist/ssh.js
CHANGED
|
@@ -36,14 +36,16 @@ class SshExecutor {
|
|
|
36
36
|
/** Execute a shell command on the remote host and return trimmed stdout. */
|
|
37
37
|
async exec(command, opts) {
|
|
38
38
|
const args = [...buildSshFlags(this.cfg), buildDestination(this.cfg), command];
|
|
39
|
-
const result = await this.execFn("ssh", args, {
|
|
39
|
+
const result = await this.execFn("ssh", args, {
|
|
40
|
+
timeout: opts?.timeout ?? REMOTE_EXEC_DEFAULT_TIMEOUT_MS,
|
|
41
|
+
});
|
|
40
42
|
return result.stdout;
|
|
41
43
|
}
|
|
42
44
|
/** Copy a local file or directory to the remote host via scp. */
|
|
43
45
|
async copyTo(localPath, remotePath) {
|
|
44
46
|
const flags = buildSshFlags(this.cfg);
|
|
45
47
|
// scp uses -P (uppercase) instead of -p for port
|
|
46
|
-
const scpFlags = flags.map((f, i) => (f === "-p" && i > 0 && flags[i - 1] !== "-o"
|
|
48
|
+
const scpFlags = flags.map((f, i) => (f === "-p" && i > 0 && flags[i - 1] !== "-o" ? "-P" : f));
|
|
47
49
|
const args = ["-r", ...scpFlags, localPath, `${buildDestination(this.cfg)}:${remotePath}`];
|
|
48
50
|
await this.execFn("scp", args, { timeout: REMOTE_COPY_TIMEOUT_MS });
|
|
49
51
|
}
|
|
@@ -61,10 +63,14 @@ class SshTunnel extends ProcessTunnel {
|
|
|
61
63
|
const flags = buildSshFlags(this.cfg);
|
|
62
64
|
const args = [
|
|
63
65
|
"-N",
|
|
64
|
-
"-L",
|
|
65
|
-
|
|
66
|
-
"-o",
|
|
67
|
-
"
|
|
66
|
+
"-L",
|
|
67
|
+
`${this.localPort}:127.0.0.1:${DEFAULT_POWERLINE_PORT}`,
|
|
68
|
+
"-o",
|
|
69
|
+
"ExitOnForwardFailure=yes",
|
|
70
|
+
"-o",
|
|
71
|
+
"ServerAliveInterval=15",
|
|
72
|
+
"-o",
|
|
73
|
+
"ServerAliveCountMax=3",
|
|
68
74
|
...flags,
|
|
69
75
|
buildDestination(this.cfg),
|
|
70
76
|
];
|
|
@@ -90,10 +96,14 @@ class SshReverseTunnel extends ProcessTunnel {
|
|
|
90
96
|
const flags = buildSshFlags(this.cfg);
|
|
91
97
|
const args = [
|
|
92
98
|
"-N",
|
|
93
|
-
"-R",
|
|
94
|
-
|
|
95
|
-
"-o",
|
|
96
|
-
"
|
|
99
|
+
"-R",
|
|
100
|
+
`${this.remotePort}:127.0.0.1:${this.localPort}`,
|
|
101
|
+
"-o",
|
|
102
|
+
"ExitOnForwardFailure=yes",
|
|
103
|
+
"-o",
|
|
104
|
+
"ServerAliveInterval=15",
|
|
105
|
+
"-o",
|
|
106
|
+
"ServerAliveCountMax=3",
|
|
97
107
|
...flags,
|
|
98
108
|
buildDestination(this.cfg),
|
|
99
109
|
];
|
|
@@ -130,7 +140,11 @@ export class SshAdapter {
|
|
|
130
140
|
}
|
|
131
141
|
const executor = new SshExecutor(cfg, this.execFn);
|
|
132
142
|
// Test SSH connectivity
|
|
133
|
-
yield {
|
|
143
|
+
yield {
|
|
144
|
+
stage: "connecting",
|
|
145
|
+
message: `Testing SSH connectivity to ${cfg.host}...`,
|
|
146
|
+
progress: 0.05,
|
|
147
|
+
};
|
|
134
148
|
try {
|
|
135
149
|
await executor.exec("echo ok", { timeout: SSH_CONNECTIVITY_TIMEOUT_MS });
|
|
136
150
|
}
|
|
@@ -144,8 +158,12 @@ export class SshAdapter {
|
|
|
144
158
|
defaultRuntime: config.defaultRuntime || undefined,
|
|
145
159
|
});
|
|
146
160
|
// Open SSH tunnel
|
|
147
|
-
const localPort = cfg.localPort || await findFreePort();
|
|
148
|
-
yield {
|
|
161
|
+
const localPort = cfg.localPort || (await findFreePort());
|
|
162
|
+
yield {
|
|
163
|
+
stage: "tunneling",
|
|
164
|
+
message: `Opening SSH tunnel on local port ${localPort}...`,
|
|
165
|
+
progress: 0.8,
|
|
166
|
+
};
|
|
149
167
|
const tunnel = new SshTunnel(localPort, cfg);
|
|
150
168
|
await tunnel.open();
|
|
151
169
|
// Open reverse tunnel (remote → host MCP server) for agent tool calls
|
|
@@ -153,7 +171,11 @@ export class SshAdapter {
|
|
|
153
171
|
const reverseTunnel = new SshReverseTunnel(mcpPort, mcpPort, cfg, this.sleepFn);
|
|
154
172
|
await reverseTunnel.open();
|
|
155
173
|
registerTunnel(environmentId, { tunnel, reverseTunnel });
|
|
156
|
-
yield {
|
|
174
|
+
yield {
|
|
175
|
+
stage: "connecting",
|
|
176
|
+
message: `Tunnel open, connecting on port ${localPort}...`,
|
|
177
|
+
progress: 0.9,
|
|
178
|
+
};
|
|
157
179
|
}
|
|
158
180
|
/**
|
|
159
181
|
* Attempt fast reconnect: probe PowerLine, restart if needed, re-open tunnel.
|
|
@@ -171,27 +193,31 @@ export class SshAdapter {
|
|
|
171
193
|
}
|
|
172
194
|
const executor = new SshExecutor(cfg, this.execFn);
|
|
173
195
|
// 1. Close any stale tunnel
|
|
174
|
-
yield { stage: "reconnecting", message: "Closing stale tunnel...", progress: 0.
|
|
196
|
+
yield { stage: "reconnecting", message: "Closing stale tunnel...", progress: 0.1 };
|
|
175
197
|
await closeTunnel(environmentId);
|
|
176
198
|
// 2. Probe + conditional restart in a single SSH call.
|
|
177
|
-
yield { stage: "reconnecting", message: `Checking PowerLine on ${cfg.host}...`, progress: 0.
|
|
199
|
+
yield { stage: "reconnecting", message: `Checking PowerLine on ${cfg.host}...`, progress: 0.3 };
|
|
178
200
|
const { alreadyRunning } = await startRemotePowerLine(executor, powerlineToken, {
|
|
179
201
|
extraEnv: cfg.env,
|
|
180
202
|
probeFirst: true,
|
|
181
203
|
});
|
|
182
204
|
if (!alreadyRunning) {
|
|
183
|
-
yield { stage: "reconnecting", message: "PowerLine restarted", progress: 0.
|
|
205
|
+
yield { stage: "reconnecting", message: "PowerLine restarted", progress: 0.5 };
|
|
184
206
|
}
|
|
185
207
|
// 3. Open new SSH tunnel + reverse tunnel for MCP
|
|
186
|
-
const localPort = cfg.localPort || await findFreePort();
|
|
187
|
-
yield {
|
|
208
|
+
const localPort = cfg.localPort || (await findFreePort());
|
|
209
|
+
yield {
|
|
210
|
+
stage: "reconnecting",
|
|
211
|
+
message: `Opening SSH tunnel on local port ${localPort}...`,
|
|
212
|
+
progress: 0.7,
|
|
213
|
+
};
|
|
188
214
|
const tunnel = new SshTunnel(localPort, cfg);
|
|
189
215
|
await tunnel.open();
|
|
190
216
|
const mcpPort = parseInt(process.env.GRACKLE_MCP_PORT || String(DEFAULT_MCP_PORT), 10);
|
|
191
217
|
const reverseTunnel = new SshReverseTunnel(mcpPort, mcpPort, cfg, this.sleepFn);
|
|
192
218
|
await reverseTunnel.open();
|
|
193
219
|
registerTunnel(environmentId, { tunnel, reverseTunnel });
|
|
194
|
-
yield { stage: "reconnecting", message: "Reconnected via SSH", progress: 0.
|
|
220
|
+
yield { stage: "reconnecting", message: "Reconnected via SSH", progress: 0.9 };
|
|
195
221
|
}
|
|
196
222
|
/** Connect to the PowerLine through the SSH tunnel. */
|
|
197
223
|
async connect(environmentId, config, powerlineToken) {
|
package/dist/ssh.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ssh.js","sourceRoot":"","sources":["../src/ssh.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ssh.js","sourceRoot":"","sources":["../src/ssh.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@grackle-ai/adapter-ssh",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.132.1",
|
|
4
4
|
"description": "Grackle SSH environment adapter",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -28,12 +28,13 @@
|
|
|
28
28
|
"dist/"
|
|
29
29
|
],
|
|
30
30
|
"dependencies": {
|
|
31
|
-
"@grackle-ai/adapter-sdk": "0.
|
|
32
|
-
"@grackle-ai/common": "0.
|
|
31
|
+
"@grackle-ai/adapter-sdk": "0.132.1",
|
|
32
|
+
"@grackle-ai/common": "0.132.1"
|
|
33
33
|
},
|
|
34
34
|
"devDependencies": {
|
|
35
35
|
"@rushstack/heft": "1.2.7",
|
|
36
36
|
"@types/node": "^22.0.0",
|
|
37
|
+
"@vitest/coverage-v8": "^3.1.1",
|
|
37
38
|
"vitest": "^3.1.1",
|
|
38
39
|
"@grackle-ai/heft-rig": "0.0.1"
|
|
39
40
|
},
|
|
@@ -42,6 +43,6 @@
|
|
|
42
43
|
"test": "vitest run",
|
|
43
44
|
"clean": "heft clean",
|
|
44
45
|
"_phase:build": "heft run --only build -- --clean",
|
|
45
|
-
"_phase:test": "vitest run"
|
|
46
|
+
"_phase:test": "vitest run --coverage"
|
|
46
47
|
}
|
|
47
48
|
}
|