pi-ssh-remote 0.1.8 → 0.1.9
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/CHANGELOG.md +16 -1
- package/LICENSE +0 -0
- package/README.md +3 -3
- package/README.zh-CN.md +3 -3
- package/index.ts +9 -6
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -18,6 +18,20 @@ The format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/). Rel
|
|
|
18
18
|
|
|
19
19
|
- None.
|
|
20
20
|
|
|
21
|
+
## [0.1.9] - 2026-08-12
|
|
22
|
+
|
|
23
|
+
### Added
|
|
24
|
+
|
|
25
|
+
- None.
|
|
26
|
+
|
|
27
|
+
### Changed
|
|
28
|
+
|
|
29
|
+
- Removed the redundant `SSH remote` prefix from footer status labels.
|
|
30
|
+
|
|
31
|
+
### Fixed
|
|
32
|
+
|
|
33
|
+
- Kept injected server memory as a single stable context prefix so tool continuations do not repeatedly move it to the end of the conversation or invalidate cached provider context.
|
|
34
|
+
|
|
21
35
|
## [0.1.8] - 2026-08-10
|
|
22
36
|
|
|
23
37
|
### Added
|
|
@@ -161,7 +175,8 @@ The format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/). Rel
|
|
|
161
175
|
|
|
162
176
|
- None.
|
|
163
177
|
|
|
164
|
-
[Unreleased]: https://github.com/petrichor20211/pi-ssh-remote/compare/v0.1.
|
|
178
|
+
[Unreleased]: https://github.com/petrichor20211/pi-ssh-remote/compare/v0.1.9...HEAD
|
|
179
|
+
[0.1.9]: https://github.com/petrichor20211/pi-ssh-remote/compare/v0.1.8...v0.1.9
|
|
165
180
|
[0.1.8]: https://github.com/petrichor20211/pi-ssh-remote/compare/v0.1.7...v0.1.8
|
|
166
181
|
[0.1.7]: https://github.com/petrichor20211/pi-ssh-remote/compare/v0.1.6...v0.1.7
|
|
167
182
|
[0.1.6]: https://github.com/petrichor20211/pi-ssh-remote/compare/v0.1.5...v0.1.6
|
package/LICENSE
CHANGED
|
File without changes
|
package/README.md
CHANGED
|
@@ -73,7 +73,7 @@ Requires Node.js 20+. The remote server must provide Bash, SFTP, and GNU `timeou
|
|
|
73
73
|
From this point, normal Pi operations target `/srv/project` on the remote server. The footer makes that routing explicit:
|
|
74
74
|
|
|
75
75
|
```text
|
|
76
|
-
|
|
76
|
+
H100 training server (root@gpu-box.example.com:2202):/srv/project
|
|
77
77
|
```
|
|
78
78
|
|
|
79
79
|
Return to local tools with:
|
|
@@ -215,13 +215,13 @@ The extension currently supports direct SSH commands with `-p`, `-l`, and `-i`.
|
|
|
215
215
|
|
|
216
216
|
## Releases
|
|
217
217
|
|
|
218
|
-
Latest release: [v0.1.
|
|
218
|
+
Latest release: [v0.1.9](https://github.com/petrichor20211/pi-ssh-remote/releases/tag/v0.1.9)
|
|
219
219
|
|
|
220
220
|
| Version | Date | Highlights |
|
|
221
221
|
|---|---|---|
|
|
222
|
+
| [0.1.9](CHANGELOG.md#019---2026-08-12) | 2026-08-12 | Stable deduplicated server-memory context and shorter footer labels |
|
|
222
223
|
| [0.1.8](CHANGELOG.md#018---2026-08-10) | 2026-08-10 | Explicit private-key login, cross-port server memory, and the shorter `remote` tool name |
|
|
223
224
|
| [0.1.7](CHANGELOG.md#017---2026-08-05) | 2026-08-05 | Session-aware SSH workspace restoration for new, forked, and resumed sessions |
|
|
224
|
-
| [0.1.6](CHANGELOG.md#016---2026-08-05) | 2026-08-05 | Bounded remote reads, streamed command output, and per-turn output budgets |
|
|
225
225
|
|
|
226
226
|
See [CHANGELOG.md](CHANGELOG.md) for the complete release history, including additions, behavior changes, and bug fixes.
|
|
227
227
|
|
package/README.zh-CN.md
CHANGED
|
@@ -39,7 +39,7 @@ ssh user@host "cd /path && ..."
|
|
|
39
39
|
插件会把当前远程目录和服务器信息写入 Pi 的上下文,并显示在底部状态栏:
|
|
40
40
|
|
|
41
41
|
```text
|
|
42
|
-
|
|
42
|
+
H100 训练机 (root@gpu-box.example.com:2202):/srv/project
|
|
43
43
|
```
|
|
44
44
|
|
|
45
45
|
这样无论是用户还是 Agent,都能随时确认当前操作发生在本地还是远端,减少误操作。
|
|
@@ -294,13 +294,13 @@ Pi 会通过插件提供的 `remote` 工具完成这些操作。
|
|
|
294
294
|
|
|
295
295
|
## 版本发布
|
|
296
296
|
|
|
297
|
-
最新版本:[v0.1.
|
|
297
|
+
最新版本:[v0.1.9](https://github.com/petrichor20211/pi-ssh-remote/releases/tag/v0.1.9)
|
|
298
298
|
|
|
299
299
|
| 版本 | 日期 | 主要内容 |
|
|
300
300
|
|---|---|---|
|
|
301
|
+
| [0.1.9](CHANGELOG.md#019---2026-08-12) | 2026-08-12 | 稳定且去重的服务器记忆上下文与更短的状态栏标签 |
|
|
301
302
|
| [0.1.8](CHANGELOG.md#018---2026-08-10) | 2026-08-10 | 显式私钥登录、跨端口服务器记忆与更短的 `remote` 工具名 |
|
|
302
303
|
| [0.1.7](CHANGELOG.md#017---2026-08-05) | 2026-08-05 | 新建、分叉和恢复 session 时自动恢复对应 SSH 工作区 |
|
|
303
|
-
| [0.1.6](CHANGELOG.md#016---2026-08-05) | 2026-08-05 | 有界远端读取、流式命令输出与每轮输出预算 |
|
|
304
304
|
|
|
305
305
|
完整的新增内容、行为变更和 Bug 修复记录请查看 [CHANGELOG.md](CHANGELOG.md)。
|
|
306
306
|
|
package/index.ts
CHANGED
|
@@ -931,8 +931,8 @@ export default function sshRemoteExtension(pi: ExtensionAPI) {
|
|
|
931
931
|
const status = (ctx: any) => {
|
|
932
932
|
currentCtx = ctx;
|
|
933
933
|
if (!remote) ctx.ui.setStatus("ssh-remote", undefined);
|
|
934
|
-
else if (routeRemoteTools) ctx.ui.setStatus("ssh-remote", ctx.ui.theme.fg("accent",
|
|
935
|
-
else ctx.ui.setStatus("ssh-remote", ctx.ui.theme.fg("accent", `
|
|
934
|
+
else if (routeRemoteTools) ctx.ui.setStatus("ssh-remote", ctx.ui.theme.fg("accent", `${endpointDisplayLabel(remote)}:${remote.cwd}`));
|
|
935
|
+
else ctx.ui.setStatus("ssh-remote", ctx.ui.theme.fg("accent", `tunnel ${[...forwardServers.keys()].join(",") || endpointDisplayLabel(remote)}`));
|
|
936
936
|
};
|
|
937
937
|
|
|
938
938
|
const attachClient = (state: RemoteState) => {
|
|
@@ -940,7 +940,7 @@ export default function sshRemoteExtension(pi: ExtensionAPI) {
|
|
|
940
940
|
client.on("close", () => {
|
|
941
941
|
if (remote?.client !== client) return;
|
|
942
942
|
if (currentCtx) {
|
|
943
|
-
currentCtx.ui.setStatus("ssh-remote", currentCtx.ui.theme.fg("warning", `
|
|
943
|
+
currentCtx.ui.setStatus("ssh-remote", currentCtx.ui.theme.fg("warning", `reconnecting ${endpointDisplayLabel(state)}…`));
|
|
944
944
|
}
|
|
945
945
|
void reconnectRemote().catch((error) => {
|
|
946
946
|
if (currentCtx) currentCtx.ui.notify(`SSH remote automatic reconnection failed: ${(error as Error).message}`, "error");
|
|
@@ -1055,7 +1055,7 @@ export default function sshRemoteExtension(pi: ExtensionAPI) {
|
|
|
1055
1055
|
}
|
|
1056
1056
|
|
|
1057
1057
|
let password = getCachedPassword(parsed);
|
|
1058
|
-
ctx.ui.setStatus("ssh-remote", ctx.ui.theme.fg("warning", `
|
|
1058
|
+
ctx.ui.setStatus("ssh-remote", ctx.ui.theme.fg("warning", `connecting ${endpointDisplayLabel(parsed)}…`));
|
|
1059
1059
|
try {
|
|
1060
1060
|
let authentication = parsed.identityFile
|
|
1061
1061
|
? await privateKeyAuthentication(parsed, ctx)
|
|
@@ -1679,14 +1679,17 @@ export default function sshRemoteExtension(pi: ExtensionAPI) {
|
|
|
1679
1679
|
if (!remote || !routeRemoteTools) return undefined;
|
|
1680
1680
|
const content = serverMemoryContext(remote);
|
|
1681
1681
|
if (!content) return undefined;
|
|
1682
|
+
const messages = event.messages.filter((message) =>
|
|
1683
|
+
message.role !== "custom" || message.customType !== "ssh-remote-server-memory"
|
|
1684
|
+
);
|
|
1682
1685
|
return {
|
|
1683
|
-
messages: [
|
|
1686
|
+
messages: [{
|
|
1684
1687
|
role: "custom",
|
|
1685
1688
|
customType: "ssh-remote-server-memory",
|
|
1686
1689
|
content,
|
|
1687
1690
|
display: false,
|
|
1688
1691
|
timestamp: Date.now(),
|
|
1689
|
-
}],
|
|
1692
|
+
}, ...messages],
|
|
1690
1693
|
};
|
|
1691
1694
|
});
|
|
1692
1695
|
}
|