@laivikto/dsh-ssh-servers 0.0.0-stage → 1.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/LICENSE +21 -0
- package/README.md +149 -2
- package/README.zh.md +149 -0
- package/client.js +1662 -0
- package/cordis.patch.yml +3 -0
- package/icon.svg +20 -0
- package/index.js +1813 -0
- package/locale/en.json +116 -0
- package/locale/zh.json +116 -0
- package/package.json +70 -4
package/locale/en.json
ADDED
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
{
|
|
2
|
+
"meta": {
|
|
3
|
+
"title": "SSH",
|
|
4
|
+
"description": "Connect to remote hosts, browse files, and open terminal sessions."
|
|
5
|
+
},
|
|
6
|
+
"title": "SSH",
|
|
7
|
+
"description": "Connect to remote hosts, browse files, and open terminal sessions.",
|
|
8
|
+
"add": "Add host",
|
|
9
|
+
"emptyTitle": "No hosts yet",
|
|
10
|
+
"emptyBody": "Add a remote host. Passwords and key passphrases stay in this machine’s DSH credential store.",
|
|
11
|
+
"edit": "Edit",
|
|
12
|
+
"delete": "Delete",
|
|
13
|
+
"confirmDelete": "Confirm delete",
|
|
14
|
+
"cancel": "Cancel",
|
|
15
|
+
"save": "Save",
|
|
16
|
+
"saving": "Saving…",
|
|
17
|
+
"connect": "Connect",
|
|
18
|
+
"connecting": "Connecting…",
|
|
19
|
+
"name": "Name",
|
|
20
|
+
"host": "Address (hostname, IPv4 or IPv6)",
|
|
21
|
+
"port": "Port",
|
|
22
|
+
"username": "Username",
|
|
23
|
+
"authMode": "Authentication",
|
|
24
|
+
"passwordAuth": "Password",
|
|
25
|
+
"keyAuth": "SSH private key",
|
|
26
|
+
"password": "Password",
|
|
27
|
+
"passwordHint": "Saved; leave blank to keep it",
|
|
28
|
+
"passwordPlaceholder": "Login password",
|
|
29
|
+
"keyPath": "Absolute private-key path",
|
|
30
|
+
"keyPathPlaceholder": "C:\\\\Users\\\\you\\\\.ssh\\\\id_ed25519",
|
|
31
|
+
"passphrase": "Key passphrase (leave blank if none)",
|
|
32
|
+
"passphraseHint": "Saved; leave blank to keep it",
|
|
33
|
+
"hostKey": "Host key verification",
|
|
34
|
+
"acceptNew": "Trust on first use",
|
|
35
|
+
"strict": "Strict (known_hosts)",
|
|
36
|
+
"hostKeyNote": "Trust on first use connects in one click, but cannot verify the host before the first connection.",
|
|
37
|
+
"addressDisplay": "Show addresses",
|
|
38
|
+
"both": "Both",
|
|
39
|
+
"unresolved": "Address not resolved",
|
|
40
|
+
"credentialSaved": "Connection credential saved",
|
|
41
|
+
"passwordMissing": "Password missing",
|
|
42
|
+
"passphraseSaved": "Key passphrase saved",
|
|
43
|
+
"passphraseOptional": "No-passphrase key",
|
|
44
|
+
"needResave": "Target changed; save the connection credential again",
|
|
45
|
+
"statusUnknown": "Credential status unknown",
|
|
46
|
+
"statusUnavailable": "Could not read credential status; retry",
|
|
47
|
+
"retry": "Retry",
|
|
48
|
+
"deleteFailed": "Delete failed",
|
|
49
|
+
"resolvingAddress": "Resolving addresses…",
|
|
50
|
+
"noAddressFamily": "No record for the selected address family",
|
|
51
|
+
"addressFailed": "Address resolution failed",
|
|
52
|
+
"invalidPort": "Port must be an integer from 1 to 65535.",
|
|
53
|
+
"connectHint": "Creates a new chat and an SSH connection; an existing terminal will be replaced.",
|
|
54
|
+
"securityNote": "Passwords and key passphrases are written only to the local DSH credential store. They are never sent to the model or chat. The plugin does not copy private-key files.",
|
|
55
|
+
"required": "Name, address, port and username are required.",
|
|
56
|
+
"passwordRequired": "Password authentication requires a password.",
|
|
57
|
+
"keyRequired": "A private-key absolute path is required.",
|
|
58
|
+
"targetChanged": "The target changed. Re-enter the secret before saving so an old credential is not sent to a new target.",
|
|
59
|
+
"saveFailed": "Save failed",
|
|
60
|
+
"connectFailed": "Connection failed",
|
|
61
|
+
"maxProfiles": "Up to 30 hosts.",
|
|
62
|
+
"openPanel": "Open SSH",
|
|
63
|
+
"promptNote": "New chat opened. The suggested prompt is in your clipboard — paste it into the input box and send.",
|
|
64
|
+
"browseKey": "Browse…",
|
|
65
|
+
"browsing": "Opening…",
|
|
66
|
+
"keyPickUnsupported": "Native file picking is unavailable here. Please enter the private-key path manually.",
|
|
67
|
+
"keyPickDir": "Choose a file from this folder",
|
|
68
|
+
"keyPickEmpty": "No selectable files in this folder.",
|
|
69
|
+
"close": "Close",
|
|
70
|
+
"connected": "Connected",
|
|
71
|
+
"unresponsive": "Unresponsive",
|
|
72
|
+
"connectedReady": "Connection established; the terminal is ready.",
|
|
73
|
+
"credentialReady": "Credentials ready",
|
|
74
|
+
"needConfig": "Needs setup",
|
|
75
|
+
"openChat": "Open new chat",
|
|
76
|
+
"openChatHint": "Open the new chat for the established SSH session",
|
|
77
|
+
"draftFailed": "Failed to prefill the prompt: ",
|
|
78
|
+
"promptCopied": "Connected. The suggested prompt has been copied to your clipboard — paste it into any chat.",
|
|
79
|
+
"promptCopiedShort": "Suggested prompt copied to clipboard.",
|
|
80
|
+
"promptCopyFailed": "Connected, but copying the suggested prompt failed. Use \"Suggested prompt\" to copy it manually.",
|
|
81
|
+
"copyPrompt": "Suggested prompt",
|
|
82
|
+
"copyPromptHint": "Copy the suggested SSH review prompt to the clipboard",
|
|
83
|
+
"fsTitle": "SSH files",
|
|
84
|
+
"fsSub": "Browse files on a connected host.",
|
|
85
|
+
"fsNoServer": "No connected host",
|
|
86
|
+
"fsNoServerHint": "Connect a host first, then browse its files.",
|
|
87
|
+
"fsLoading": "Loading…",
|
|
88
|
+
"fsRefresh": "Refresh",
|
|
89
|
+
"fsUp": "Up one level",
|
|
90
|
+
"fsFilter": "Filter by name…",
|
|
91
|
+
"fsSortName": "By name",
|
|
92
|
+
"fsSortSize": "By size",
|
|
93
|
+
"fsSortTime": "By time",
|
|
94
|
+
"fsSortType": "By type",
|
|
95
|
+
"fsAsc": "Ascending",
|
|
96
|
+
"fsDesc": "Descending",
|
|
97
|
+
"fsColName": "Name",
|
|
98
|
+
"fsColSize": "Size",
|
|
99
|
+
"fsColTime": "Modified",
|
|
100
|
+
"fsColType": "Type",
|
|
101
|
+
"fsEmptyDir": "Empty directory",
|
|
102
|
+
"fsDownload": "Download",
|
|
103
|
+
"fsFoot": "Directories cannot be downloaded · 8 MB per file",
|
|
104
|
+
"viewHosts": "Hosts",
|
|
105
|
+
"viewFiles": "Files",
|
|
106
|
+
"showIp": "Show full IP",
|
|
107
|
+
"hideIp": "Hide full IP",
|
|
108
|
+
"fullIp": "Full IP",
|
|
109
|
+
"maskedIp": "Partially hidden",
|
|
110
|
+
"authKey": "Use key",
|
|
111
|
+
"authPassword": "Use password",
|
|
112
|
+
"authHint": "Both credentials can be saved; pick one at connect time.",
|
|
113
|
+
"fsPreviewLoading": "Loading…",
|
|
114
|
+
"fsPreviewClose": "Close",
|
|
115
|
+
"fsPreviewTruncated": "File is large — showing the first 1 MB"
|
|
116
|
+
}
|
package/locale/zh.json
ADDED
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
{
|
|
2
|
+
"meta": {
|
|
3
|
+
"title": "SSH 服务",
|
|
4
|
+
"description": "连接远程主机,浏览文件并开启终端会话。"
|
|
5
|
+
},
|
|
6
|
+
"openPanel": "打开 SSH 服务",
|
|
7
|
+
"keyPickUnsupported": "当前环境不支持原生文件选择,请手动填写私钥路径。",
|
|
8
|
+
"deleteFailed": "删除失败",
|
|
9
|
+
"required": "请填写名称、地址、端口和用户名。",
|
|
10
|
+
"invalidPort": "端口需为 1–65535 的整数。",
|
|
11
|
+
"keyRequired": "请填写私钥路径。",
|
|
12
|
+
"passwordRequired": "密码认证需要填写密码。",
|
|
13
|
+
"maxProfiles": "最多保存 30 台主机。",
|
|
14
|
+
"credentialSaved": "连接凭据已保存",
|
|
15
|
+
"saveFailed": "保存失败",
|
|
16
|
+
"connectedReady": "连接已建立,终端已就绪。",
|
|
17
|
+
"connectFailed": "连接失败",
|
|
18
|
+
"statusUnknown": "凭据状态未知",
|
|
19
|
+
"statusUnavailable": "无法读取凭据状态,请重试",
|
|
20
|
+
"needResave": "目标已变化,需重新保存连接凭据",
|
|
21
|
+
"passwordMissing": "缺少密码",
|
|
22
|
+
"passphraseSaved": "私钥口令已保存",
|
|
23
|
+
"passphraseOptional": "无口令密钥或手动输入",
|
|
24
|
+
"name": "名称",
|
|
25
|
+
"port": "端口",
|
|
26
|
+
"host": "地址(域名、IPv4 或 IPv6)",
|
|
27
|
+
"username": "用户名",
|
|
28
|
+
"authMode": "认证方式",
|
|
29
|
+
"keyAuth": "SSH 私钥",
|
|
30
|
+
"passwordAuth": "密码",
|
|
31
|
+
"keyPath": "私钥文件绝对路径",
|
|
32
|
+
"keyPathPlaceholder": "C:\\\\Users\\\\你\\\\.ssh\\\\id_ed25519",
|
|
33
|
+
"browseKey": "浏览…",
|
|
34
|
+
"browsing": "打开中…",
|
|
35
|
+
"keyPickDir": "从该目录选择文件",
|
|
36
|
+
"close": "关闭",
|
|
37
|
+
"keyPickEmpty": "该目录没有可选文件。",
|
|
38
|
+
"passphrase": "私钥口令(没有口令可留空)",
|
|
39
|
+
"passphraseHint": "已保存;留空则保持不变",
|
|
40
|
+
"password": "密码",
|
|
41
|
+
"passwordHint": "已保存;留空则保持不变",
|
|
42
|
+
"passwordPlaceholder": "登录密码",
|
|
43
|
+
"hostKey": "主机密钥校验",
|
|
44
|
+
"acceptNew": "首次自动信任",
|
|
45
|
+
"strict": "严格校验(known_hosts)",
|
|
46
|
+
"hostKeyNote": "首次自动信任可一键连接,但第一次连接前无法验证主机身份。",
|
|
47
|
+
"addressDisplay": "地址显示",
|
|
48
|
+
"both": "双栈",
|
|
49
|
+
"securityNote": "密码和私钥口令只写入本机 DSH 凭据库,不会发送给模型,也不会写入聊天记录。插件不复制私钥文件。",
|
|
50
|
+
"saving": "正在保存…",
|
|
51
|
+
"save": "保存",
|
|
52
|
+
"cancel": "取消",
|
|
53
|
+
"connected": "已连接",
|
|
54
|
+
"unresponsive": "未响应",
|
|
55
|
+
"credentialReady": "凭据就绪",
|
|
56
|
+
"needConfig": "待配置",
|
|
57
|
+
"resolvingAddress": "正在解析地址…",
|
|
58
|
+
"addressFailed": "地址解析失败",
|
|
59
|
+
"noAddressFamily": "该地址族没有记录",
|
|
60
|
+
"openChatHint": "打开已建立的 SSH 会话对应的新聊天",
|
|
61
|
+
"draftFailed": "提示词预填失败:",
|
|
62
|
+
"promptNote": "已打开新聊天。推荐提示词在剪贴板中,粘贴到输入框后发送。",
|
|
63
|
+
"openChat": "打开新聊天",
|
|
64
|
+
"connectHint": "将建立 SSH 连接并准备新聊天;已有终端会被替换。",
|
|
65
|
+
"connecting": "正在连接…",
|
|
66
|
+
"connect": "连接",
|
|
67
|
+
"retry": "重试",
|
|
68
|
+
"edit": "编辑",
|
|
69
|
+
"confirmDelete": "确认删除",
|
|
70
|
+
"delete": "删除",
|
|
71
|
+
"title": "SSH 服务",
|
|
72
|
+
"description": "连接远程主机,浏览文件并开启终端会话。",
|
|
73
|
+
"add": "添加主机",
|
|
74
|
+
"emptyTitle": "还没有主机",
|
|
75
|
+
"emptyBody": "添加一台远程主机。密码与密钥口令只保存在本机 DSH 凭据库。",
|
|
76
|
+
"unresolved": "地址未解析",
|
|
77
|
+
"targetChanged": "连接目标已修改,请重新输入密码/口令后再保存,避免旧凭据被发往新目标。",
|
|
78
|
+
"promptCopied": "连接已建立,推荐提示词已复制到剪贴板。可直接粘贴到任意聊天。",
|
|
79
|
+
"promptCopiedShort": "推荐提示词已复制到剪贴板。",
|
|
80
|
+
"promptCopyFailed": "连接已建立,但自动复制提示词失败。可点「推荐提示词」手动复制。",
|
|
81
|
+
"copyPrompt": "推荐提示词",
|
|
82
|
+
"copyPromptHint": "复制推荐的 SSH 检查提示词到剪贴板",
|
|
83
|
+
"fsTitle": "SSH 服务文件",
|
|
84
|
+
"fsSub": "浏览已连接主机上的文件。",
|
|
85
|
+
"fsNoServer": "没有已连接的主机",
|
|
86
|
+
"fsNoServerHint": "请先连接一台主机,再浏览文件。",
|
|
87
|
+
"fsLoading": "加载中…",
|
|
88
|
+
"fsRefresh": "刷新",
|
|
89
|
+
"fsUp": "上一级",
|
|
90
|
+
"fsFilter": "筛选文件名…",
|
|
91
|
+
"fsSortName": "按名称",
|
|
92
|
+
"fsSortSize": "按大小",
|
|
93
|
+
"fsSortTime": "按时间",
|
|
94
|
+
"fsSortType": "按类型",
|
|
95
|
+
"fsAsc": "升序",
|
|
96
|
+
"fsDesc": "降序",
|
|
97
|
+
"fsColName": "名称",
|
|
98
|
+
"fsColSize": "大小",
|
|
99
|
+
"fsColTime": "修改时间",
|
|
100
|
+
"fsColType": "类型",
|
|
101
|
+
"fsEmptyDir": "目录为空",
|
|
102
|
+
"fsDownload": "下载",
|
|
103
|
+
"fsFoot": "目录不可下载 · 单文件上限 8 MB",
|
|
104
|
+
"viewHosts": "主机",
|
|
105
|
+
"viewFiles": "文件",
|
|
106
|
+
"showIp": "显示完整 IP",
|
|
107
|
+
"hideIp": "隐藏完整 IP",
|
|
108
|
+
"fullIp": "完整 IP",
|
|
109
|
+
"maskedIp": "已隐藏部分 IP",
|
|
110
|
+
"authKey": "使用密钥",
|
|
111
|
+
"authPassword": "使用密码",
|
|
112
|
+
"authHint": "两种凭据可同时保存,连接时选择用哪个。",
|
|
113
|
+
"fsPreviewLoading": "读取中…",
|
|
114
|
+
"fsPreviewClose": "关闭",
|
|
115
|
+
"fsPreviewTruncated": "文件较大,仅显示前 1 MB"
|
|
116
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,72 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@laivikto/dsh-ssh-servers",
|
|
3
|
-
"version": "
|
|
4
|
-
"
|
|
5
|
-
"
|
|
6
|
-
|
|
3
|
+
"version": "1.2.1",
|
|
4
|
+
"description": "SSH server manager for DeepSeek Harness: saved key/password connections, native key-file picker, live connection health, IPv4/IPv6 display, a task prompt copied to the clipboard, and remote file browsing.",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "index.js",
|
|
7
|
+
"license": "MIT",
|
|
8
|
+
"author": "Laivikto",
|
|
9
|
+
"publishConfig": {
|
|
10
|
+
"access": "public"
|
|
11
|
+
},
|
|
12
|
+
"keywords": [
|
|
13
|
+
"dsh",
|
|
14
|
+
"dsh-plugin",
|
|
15
|
+
"deepseek-harness",
|
|
16
|
+
"ssh",
|
|
17
|
+
"ssh-client",
|
|
18
|
+
"remote",
|
|
19
|
+
"server-management"
|
|
20
|
+
],
|
|
21
|
+
"repository": {
|
|
22
|
+
"type": "git",
|
|
23
|
+
"url": "git+https://github.com/Laivikto/dsh-ssh-servers.git"
|
|
24
|
+
},
|
|
25
|
+
"bugs": {
|
|
26
|
+
"url": "https://github.com/Laivikto/dsh-ssh-servers/issues"
|
|
27
|
+
},
|
|
28
|
+
"homepage": "https://github.com/Laivikto/dsh-ssh-servers#readme",
|
|
29
|
+
"exports": {
|
|
30
|
+
".": "./index.js",
|
|
31
|
+
"./client": "./client.js",
|
|
32
|
+
"./locale/*.json": "./locale/*.json",
|
|
33
|
+
"./icon": "./icon.svg"
|
|
34
|
+
},
|
|
35
|
+
"files": [
|
|
36
|
+
"index.js",
|
|
37
|
+
"client.js",
|
|
38
|
+
"cordis.patch.yml",
|
|
39
|
+
"locale/*.json",
|
|
40
|
+
"icon.svg",
|
|
41
|
+
"README.md",
|
|
42
|
+
"README.zh.md",
|
|
43
|
+
"LICENSE"
|
|
44
|
+
],
|
|
45
|
+
"dsh": {
|
|
46
|
+
"engines": {
|
|
47
|
+
"dsh": ">=0.2.2-rc.1"
|
|
48
|
+
},
|
|
49
|
+
"bundle": {
|
|
50
|
+
"patch": "./cordis.patch.yml"
|
|
51
|
+
},
|
|
52
|
+
"client": {
|
|
53
|
+
"platform": "web",
|
|
54
|
+
"immediately": true,
|
|
55
|
+
"inject": [
|
|
56
|
+
"@deepseek-ai/dsh-client-ui-sidebar-right",
|
|
57
|
+
"@deepseek-ai/dsh-client-ui-sidebar-terminal",
|
|
58
|
+
"@deepseek-ai/dsh-client-ui-conversation",
|
|
59
|
+
"@deepseek-ai/dsh-client-ui-workspace"
|
|
60
|
+
]
|
|
61
|
+
}
|
|
62
|
+
},
|
|
63
|
+
"scripts": {
|
|
64
|
+
"test": "node --test tests/*.test.mjs",
|
|
65
|
+
"test:watch": "node --test --watch tests/*.test.mjs",
|
|
66
|
+
"check": "node --check index.js && node --check client.js",
|
|
67
|
+
"prepublishOnly": "npm run check && npm test"
|
|
68
|
+
},
|
|
69
|
+
"engines": {
|
|
70
|
+
"node": ">=22.13.0"
|
|
71
|
+
}
|
|
72
|
+
}
|