@tunnelbox/core 0.1.10 → 0.1.16
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 +28 -28
- package/README.zh-CN.md +28 -28
- package/dist/index.js +67 -2
- package/locales/de-DE.json +166 -165
- package/locales/en-US.json +166 -165
- package/locales/es-ES.json +166 -165
- package/locales/fr-FR.json +166 -165
- package/locales/ja-JP.json +166 -165
- package/locales/ko-KR.json +166 -165
- package/locales/zh-CN.json +166 -165
- package/locales/zh-TW.json +166 -165
- package/package.json +1 -1
- package/src/messages.ts +171 -171
- package/src/qr.ts +108 -108
- package/src/relay.ts +67 -2
- package/src/types.ts +2 -0
package/locales/zh-CN.json
CHANGED
|
@@ -1,165 +1,166 @@
|
|
|
1
|
-
{
|
|
2
|
-
"agent.err.createSession": "创建会话失败",
|
|
3
|
-
"agent.err.httpClient": "无法访问 opencode HTTP client",
|
|
4
|
-
"agent.err.unknownPerm": "未知的权限请求: {id}",
|
|
5
|
-
"agent.err.unknownQuestion": "未知的提问请求: {id}",
|
|
6
|
-
"agent.log.fallback404": "回包首选端点 404,回退另一端点: {message}",
|
|
7
|
-
"agent.log.gotPermReply": "收到手机权限回复 (id={id} {reply} {version})",
|
|
8
|
-
"agent.log.gotQuestionReply": "收到手机提问回复 (id={id} {status} {version})",
|
|
9
|
-
"agent.log.handleFailed": "处理 {type} 失败: {message}",
|
|
10
|
-
"agent.log.msgOk": "拉取会话消息成功 session={session} data={count} 方式={limited} win={win} ms={ms}",
|
|
11
|
-
"agent.log.msgFailed": "拉取会话消息失败 session={session} err={err} ms={ms}",
|
|
12
|
-
"agent.log.msgLimitFallback": "当前 opencode 不支持 limit,回退全量拉取(session={session})",
|
|
13
|
-
"agent.log.httpOk": "opencode HTTP {status} {path}",
|
|
14
|
-
"agent.log.pendingResent": "session.pending: 补发 {session} 积压请求 {count} 条",
|
|
15
|
-
"agent.log.unhandledType": "未处理的消息类型: {type}",
|
|
16
|
-
"events.log.fwdPermission": "转发权限请求到手机 (id={id} tool={tool} {version})",
|
|
17
|
-
"events.log.
|
|
18
|
-
"events.log.
|
|
19
|
-
"events.log.
|
|
20
|
-
"
|
|
21
|
-
"index.error.
|
|
22
|
-
"index.
|
|
23
|
-
"index.log.
|
|
24
|
-
"index.log.
|
|
25
|
-
"index.log.
|
|
26
|
-
"index.log.
|
|
27
|
-
"index.log.
|
|
28
|
-
"index.log.
|
|
29
|
-
"index.log.
|
|
30
|
-
"index.log.
|
|
31
|
-
"index.log.
|
|
32
|
-
"index.log.
|
|
33
|
-
"index.log.
|
|
34
|
-
"index.log.
|
|
35
|
-
"
|
|
36
|
-
"install.
|
|
37
|
-
"install.
|
|
38
|
-
"install.
|
|
39
|
-
"install.
|
|
40
|
-
"install.
|
|
41
|
-
"install.
|
|
42
|
-
"install.
|
|
43
|
-
"install.
|
|
44
|
-
"install.
|
|
45
|
-
"install.
|
|
46
|
-
"install.
|
|
47
|
-
"
|
|
48
|
-
"pair.
|
|
49
|
-
"pair.
|
|
50
|
-
"pair.
|
|
51
|
-
"pair.
|
|
52
|
-
"pair.
|
|
53
|
-
"
|
|
54
|
-
"perm.
|
|
55
|
-
"perm.
|
|
56
|
-
"perm.
|
|
57
|
-
"
|
|
58
|
-
"qr.
|
|
59
|
-
"qr.
|
|
60
|
-
"qr.
|
|
61
|
-
"qr.
|
|
62
|
-
"qr.
|
|
63
|
-
"
|
|
64
|
-
"claude.
|
|
65
|
-
"claude.
|
|
66
|
-
"claude.
|
|
67
|
-
"claude.
|
|
68
|
-
"claude.
|
|
69
|
-
"claude.
|
|
70
|
-
"claude.
|
|
71
|
-
"claude.
|
|
72
|
-
"claude.
|
|
73
|
-
"claude.
|
|
74
|
-
"claude.
|
|
75
|
-
"claude.
|
|
76
|
-
"claude.
|
|
77
|
-
"claude.
|
|
78
|
-
"claude.
|
|
79
|
-
"claude.
|
|
80
|
-
"claude.
|
|
81
|
-
"claude.
|
|
82
|
-
"claude.
|
|
83
|
-
"claude.
|
|
84
|
-
"claude.
|
|
85
|
-
"claude.
|
|
86
|
-
"claude.
|
|
87
|
-
"claude.
|
|
88
|
-
"claude.
|
|
89
|
-
"claude.
|
|
90
|
-
"claude.
|
|
91
|
-
"claude.
|
|
92
|
-
"claude.
|
|
93
|
-
"claude.
|
|
94
|
-
"claude.
|
|
95
|
-
"claude.
|
|
96
|
-
"claude.
|
|
97
|
-
"claude.
|
|
98
|
-
"claude.
|
|
99
|
-
"claude.
|
|
100
|
-
"claude.
|
|
101
|
-
"claude.
|
|
102
|
-
"claude.
|
|
103
|
-
"claude.
|
|
104
|
-
"claude.
|
|
105
|
-
"claude.
|
|
106
|
-
"claude.
|
|
107
|
-
"claude.
|
|
108
|
-
"claude.
|
|
109
|
-
"claude.
|
|
110
|
-
"claude.
|
|
111
|
-
"claude.
|
|
112
|
-
"claude.
|
|
113
|
-
"claude.
|
|
114
|
-
"claude.
|
|
115
|
-
"claude.
|
|
116
|
-
"claude.
|
|
117
|
-
"claude.
|
|
118
|
-
"claude.
|
|
119
|
-
"claude.
|
|
120
|
-
"claude.
|
|
121
|
-
"claude.
|
|
122
|
-
"claude.
|
|
123
|
-
"claude.
|
|
124
|
-
"claude.
|
|
125
|
-
"claude.
|
|
126
|
-
"claude.
|
|
127
|
-
"claude.
|
|
128
|
-
"
|
|
129
|
-
"setup.
|
|
130
|
-
"setup.
|
|
131
|
-
"
|
|
132
|
-
"hermes.
|
|
133
|
-
"hermes.
|
|
134
|
-
"hermes.
|
|
135
|
-
"hermes.
|
|
136
|
-
"hermes.
|
|
137
|
-
"hermes.
|
|
138
|
-
"hermes.
|
|
139
|
-
"hermes.
|
|
140
|
-
"hermes.
|
|
141
|
-
"hermes.
|
|
142
|
-
"hermes.
|
|
143
|
-
"hermes.
|
|
144
|
-
"hermes.
|
|
145
|
-
"hermes.
|
|
146
|
-
"hermes.
|
|
147
|
-
"hermes.
|
|
148
|
-
"hermes.
|
|
149
|
-
"hermes.
|
|
150
|
-
"hermes.
|
|
151
|
-
"hermes.
|
|
152
|
-
"hermes.
|
|
153
|
-
"hermes.
|
|
154
|
-
"hermes.
|
|
155
|
-
"hermes.
|
|
156
|
-
"hermes.
|
|
157
|
-
"hermes.
|
|
158
|
-
"hermes.
|
|
159
|
-
"hermes.
|
|
160
|
-
"hermes.
|
|
161
|
-
"hermes.
|
|
162
|
-
"hermes.
|
|
163
|
-
"hermes.
|
|
164
|
-
"hermes.
|
|
165
|
-
|
|
1
|
+
{
|
|
2
|
+
"agent.err.createSession": "创建会话失败",
|
|
3
|
+
"agent.err.httpClient": "无法访问 opencode HTTP client",
|
|
4
|
+
"agent.err.unknownPerm": "未知的权限请求: {id}",
|
|
5
|
+
"agent.err.unknownQuestion": "未知的提问请求: {id}",
|
|
6
|
+
"agent.log.fallback404": "回包首选端点 404,回退另一端点: {message}",
|
|
7
|
+
"agent.log.gotPermReply": "收到手机权限回复 (id={id} {reply} {version})",
|
|
8
|
+
"agent.log.gotQuestionReply": "收到手机提问回复 (id={id} {status} {version})",
|
|
9
|
+
"agent.log.handleFailed": "处理 {type} 失败: {message}",
|
|
10
|
+
"agent.log.msgOk": "拉取会话消息成功 session={session} data={count} 方式={limited} win={win} ms={ms}",
|
|
11
|
+
"agent.log.msgFailed": "拉取会话消息失败 session={session} err={err} ms={ms}",
|
|
12
|
+
"agent.log.msgLimitFallback": "当前 opencode 不支持 limit,回退全量拉取(session={session})",
|
|
13
|
+
"agent.log.httpOk": "opencode HTTP {status} {path}",
|
|
14
|
+
"agent.log.pendingResent": "session.pending: 补发 {session} 积压请求 {count} 条",
|
|
15
|
+
"agent.log.unhandledType": "未处理的消息类型: {type}",
|
|
16
|
+
"events.log.fwdPermission": "转发权限请求到手机 (id={id} tool={tool} {version})",
|
|
17
|
+
"events.log.sessionDeleted": "转发 session.deleted 到手机 (session={session})",
|
|
18
|
+
"events.log.permissionReplied": "opencode 回执 permission.replied (id={id} {response})",
|
|
19
|
+
"events.log.questionRejected": "opencode 回执 question.rejected (id={id})",
|
|
20
|
+
"events.log.questionReplied": "opencode 回执 question.replied (id={id})",
|
|
21
|
+
"index.error.connectRelay": "无法连接中继,请检查中继地址后重试",
|
|
22
|
+
"index.error.pairTimeout": "等待配对码超时(中继未响应)",
|
|
23
|
+
"index.log.claimed": "已绑定到手机账号,之后手机从「我的电脑」直接连接,无需再扫码",
|
|
24
|
+
"index.log.connectedRelay": "已连接中继 {url}",
|
|
25
|
+
"index.log.loaded": "tunnelbox opencode 插件已启动(v{version})",
|
|
26
|
+
"index.log.disconnected": "与中继断开,正在自动重连…",
|
|
27
|
+
"index.log.exit": "已退出",
|
|
28
|
+
"index.log.pairCode": "生成配对码: {code}",
|
|
29
|
+
"index.log.pairingStillClaimed": "此配对码仅供同账号的新手机重新配对;本机已绑定,仍可从手机「我的电脑」直接连接。",
|
|
30
|
+
"index.log.pairingPreparing": "正在连接中继并生成配对码…",
|
|
31
|
+
"index.log.permissionToPhone": "权限请求 → 手机审批 (id={id} tool={tool})",
|
|
32
|
+
"index.log.permissionTuiFallback": "app 离线,权限请求由 opencode TUI 兜底 (id={id} tool={tool})",
|
|
33
|
+
"index.log.relayError": "中继错误: {msg}",
|
|
34
|
+
"index.log.resetIdentity": "被账号解绑,正在重置身份并重新生成配对码…",
|
|
35
|
+
"index.log.unknown": "未知",
|
|
36
|
+
"install.codeLine": "配对码: {code}",
|
|
37
|
+
"install.commandInstalled": "已安装命令: {path}",
|
|
38
|
+
"install.done": "完成。已尝试连接中继输出本机配对信息:",
|
|
39
|
+
"install.failConnect": "(未能即时连接中继打印配对信息——中继不可达或当前 Node 过旧。",
|
|
40
|
+
"install.failConnectHint": "重启 opencode 后可用 --print-logs 查看终端二维码,或在 opencode 内输入“显示手机配对码”或 /pair。)",
|
|
41
|
+
"install.hintFresh": "提示:配对码为一次性,约 10 分钟有效;若稍后才启动 opencode,以启动时终端打印或 /pair 取得的最新配对信息为准。",
|
|
42
|
+
"install.pluginInstalled": "已安装插件: {path}",
|
|
43
|
+
"install.qrUnavailable": "(二维码渲染不可用,请使用上方配对码)",
|
|
44
|
+
"install.qrcodeEnsure": "安装 qrcode 到 opencode 配置目录…",
|
|
45
|
+
"install.qrcodeFail": "qrcode 安装失败(不影响使用,仅显示配对码): {err}",
|
|
46
|
+
"install.relayError": "中继返回错误: {msg}",
|
|
47
|
+
"install.scanHint": "手机打开 tunnelbox App「扫一扫配对」,扫描上方二维码即可连接:",
|
|
48
|
+
"pair.heading": "tunnelbox 手机配对",
|
|
49
|
+
"pair.howTo": "在手机上打开 tunnelbox App,用「扫一扫配对」扫描上方二维码,或手动输入配对码。",
|
|
50
|
+
"pair.oneTime": "配对码为一次性,使用后即失效;如需新码,可要求“刷新配对码”。",
|
|
51
|
+
"pair.promptBody": "请帮我查看本机手机远程配对信息:显示配对码与可供扫码的二维码。二维码请放在等宽代码块里并逐字原样保留,方便我用手机扫码。",
|
|
52
|
+
"pair.promptDescription": "显示手机远程配对的配对码与扫码二维码",
|
|
53
|
+
"pair.scanIntro": "**扫一扫配对**:手机打开 tunnelbox App「扫一扫配对」,扫描下方二维码即可自动连接。",
|
|
54
|
+
"perm.promptAuthorize": "opencode 请求授权",
|
|
55
|
+
"perm.promptPatterns": "opencode 请求访问:{list}",
|
|
56
|
+
"perm.promptResource": "opencode 请求访问资源:{list}",
|
|
57
|
+
"perm.promptTool": "opencode 请求执行 {tool}",
|
|
58
|
+
"qr.codeLabel": "配对码",
|
|
59
|
+
"qr.fileWritten": "配对信息已写入: {path}",
|
|
60
|
+
"qr.openHint": "打开 tunnelbox App,用「扫一扫配对」扫描上方二维码,或手动输入配对码。",
|
|
61
|
+
"qr.titleNoType": "tunnelbox 手机配对",
|
|
62
|
+
"qr.titleWithType": "tunnelbox {type} 手机配对",
|
|
63
|
+
"qr.unavailable": "(未安装 qrcode,请使用上方配对码)",
|
|
64
|
+
"claude.errBusy": "该会话正在生成中,请等待完成或先停止",
|
|
65
|
+
"claude.errTurn": "生成出错",
|
|
66
|
+
"claude.pairingStillClaimed": "已绑定手机账号:此配对码仅用于同账号新设备重新配对,当前设备可直接从手机「我的电脑」连接",
|
|
67
|
+
"claude.pairForced": "--pair:已强制申请配对码(仅本次)",
|
|
68
|
+
"claude.pairUnclaimed": "未检测到已绑定账号,开始配对引导:",
|
|
69
|
+
"claude.claimedHint": "已绑定手机账号:从手机「我的电脑」直接连接即可",
|
|
70
|
+
"claude.errStartFailed": "启动失败:",
|
|
71
|
+
"claude.msgStarted": "Claude Code 适配器已启动(Ctrl+C 退出)",
|
|
72
|
+
"claude.warnInvalidMode": "忽略无效 TUNNELBOX_CLAUDE_MODE: {raw}(允许 {list})",
|
|
73
|
+
"claude.warnInvalidThinking": "忽略无效 TUNNELBOX_CLAUDE_THINKING: {raw}(off|adaptive|enabled[:budget])",
|
|
74
|
+
"claude.cmdNew": "新建会话",
|
|
75
|
+
"claude.cmdHelp": "显示帮助",
|
|
76
|
+
"claude.errNoRelay": "未配置中继地址:构建请用 --env 注入默认,运行可用 TUNNELBOX_RELAY_URL 覆盖",
|
|
77
|
+
"claude.logConnected": "已连接中继 {url}",
|
|
78
|
+
"claude.logMsgUncaught": "消息处理未捕获异常: {message}",
|
|
79
|
+
"claude.reasonDisconnect": "中继断开(fail-closed 自动拒绝)",
|
|
80
|
+
"claude.reasonUnbind": "账号解绑(fail-closed 自动拒绝)",
|
|
81
|
+
"claude.logDisconnected": "与中继断开,正在自动重连…",
|
|
82
|
+
"claude.logPairCode": "生成配对码: {code}",
|
|
83
|
+
"claude.logUnhandledType": "未处理的消息类型: {type}",
|
|
84
|
+
"claude.logHandleFailed": "处理 {type} 失败: {message}",
|
|
85
|
+
"claude.newSessionTitle": "新会话",
|
|
86
|
+
"claude.helpText": "支持的命令:\n- /new 新建会话\n- /help 显示帮助",
|
|
87
|
+
"claude.logPromptFailed": "session.prompt 失败: {message}",
|
|
88
|
+
"claude.logAbortSent": "已发送中止 (session={session})",
|
|
89
|
+
"claude.logAbortFailed": "中止失败 (session={session}): {message}",
|
|
90
|
+
"claude.errBadWorkspaceEmpty": "缺少工作区路径",
|
|
91
|
+
"claude.errBadWorkspaceNotDir": "该目录不存在或不可用",
|
|
92
|
+
"claude.logWorkspaceSwitched": "切换工作区: {path}",
|
|
93
|
+
"claude.logUnknownQuestionReply": "未匹配的结构化提问应答 (id={id})",
|
|
94
|
+
"claude.logFlushedQuestions": "已取消 {count} 个待作答提问: {reason}",
|
|
95
|
+
"claude.logFlushedApprovals": "已拒绝 {count} 个待作答请求: {reason}",
|
|
96
|
+
"claude.logPendingResent": "session.pending 补发待办 {count} 条 (session={session})",
|
|
97
|
+
"claude.logSetModeFailed": "setPermissionMode 失败 (session={session}): {message}",
|
|
98
|
+
"claude.errWorkspaceMissing": "工作区不存在: {dir}",
|
|
99
|
+
"claude.logSessionError": "会话出错 (session={session}): {message}",
|
|
100
|
+
"claude.logOfflineDenyTool": "中继离线,自动拒绝工具 {tool}",
|
|
101
|
+
"claude.errOfflineDeny": "中继离线,自动拒绝(fail-closed)",
|
|
102
|
+
"claude.logAuqDisabled": "AskUserQuestion 已关闭(TUNNELBOX_CLAUDE_ASK_USER_QUESTION=0),自动拒绝",
|
|
103
|
+
"claude.errAuqDisabled": "AskUserQuestion 提问未启用",
|
|
104
|
+
"claude.logAuqParseFailed": "AskUserQuestion input 解析失败,自动拒绝(fail-closed)",
|
|
105
|
+
"claude.errAuqParse": "无法解析题目",
|
|
106
|
+
"claude.logAuqSkipped": "AskUserQuestion 未作答/取消 (session={session})",
|
|
107
|
+
"claude.errAuqCancelled": "用户未选择(cancelled)",
|
|
108
|
+
"claude.logAuqDone": "AskUserQuestion 作答完成 (session={session})",
|
|
109
|
+
"claude.promptRunTool": "Claude Code 请求执行 {tool}",
|
|
110
|
+
"claude.errApprovalTimeout": "审批超时,自动拒绝(fail-closed)",
|
|
111
|
+
"claude.errUserDenied": "用户拒绝",
|
|
112
|
+
"claude.errAborted": "请求已中止",
|
|
113
|
+
"claude.logPermToPhone": "审批请求(tool={tool}) → 发送到手机权限卡 permissionID={id}",
|
|
114
|
+
"claude.errRelayUnreachable": "中继不可达,自动拒绝(fail-closed)",
|
|
115
|
+
"claude.logQuestionOffline": "中继离线,结构化提问自动取消",
|
|
116
|
+
"claude.logQuestionToPhone": "结构化提问({count} 题) → 发送到手机 questionID={id}",
|
|
117
|
+
"claude.logDialogOffline": "中继离线,对话框自动取消({tool})",
|
|
118
|
+
"claude.logDialogToPhone": "对话框请求(kind={kind} tool={tool}) → 发送到手机权限卡 permissionID={id}",
|
|
119
|
+
"claude.logAuqDialogParse": "AskUserQuestion payload 解析失败,保持默认行为(session={session})",
|
|
120
|
+
"claude.logDialogUnmapped": "request_user_dialog(kind={kind}) 未接入映射,保持默认行为(session={session})",
|
|
121
|
+
"claude.promptMcpAuth": "MCP「{server}」请求授权",
|
|
122
|
+
"claude.logElicitUnmapped": "MCP elicitation(server={server}, mode={mode}) 未接入,自动拒绝(session={session})",
|
|
123
|
+
"claude.logResetIdentity": "被账号解绑,正在重置身份并重新生成配对码…",
|
|
124
|
+
"claude.dialogConfirm": "Claude Code 请求确认({kind})",
|
|
125
|
+
"claude.resultTruncated": "…(结果过长已截断)",
|
|
126
|
+
"claude.streamError": "claude 流式出错",
|
|
127
|
+
"claude.errListSessions": "读取 Claude 会话列表失败",
|
|
128
|
+
"claude.errReadHistory": "读取会话历史失败({id})",
|
|
129
|
+
"setup.langSet": "已设置运行语言",
|
|
130
|
+
"setup.langHint": "重启适配器后按该语言输出(运行时可被 TUNNELBOX_LANG 覆盖)。状态文件:",
|
|
131
|
+
"setup.langCurrent": "当前运行语言",
|
|
132
|
+
"hermes.errNoRelay": "未配置中继地址:构建请用 --env 注入默认,运行可用 TUNNELBOX_RELAY_URL 覆盖",
|
|
133
|
+
"hermes.logConnected": "已连接中继 {url}",
|
|
134
|
+
"hermes.logMsgUncaught": "消息处理未捕获异常: {message}",
|
|
135
|
+
"hermes.logDisconnected": "与中继断开,正在自动重连…",
|
|
136
|
+
"hermes.logPairCode": "生成配对码: {code}",
|
|
137
|
+
"hermes.logUnhandledType": "未处理的消息类型: {type}",
|
|
138
|
+
"hermes.logHandleFailed": "处理 {type} 失败: {message}",
|
|
139
|
+
"hermes.logClaimed": "已绑定到手机账号,之后手机从「我的电脑」直接连接",
|
|
140
|
+
"hermes.logResetIdentity": "被账号解绑,正在重置身份并重新生成配对码…",
|
|
141
|
+
"hermes.cmdNew": "新建会话",
|
|
142
|
+
"hermes.cmdHelp": "显示帮助",
|
|
143
|
+
"hermes.newSessionTitle": "新会话",
|
|
144
|
+
"hermes.helpText": "支持的命令:\n- /new 新建会话\n- /help 显示帮助",
|
|
145
|
+
"hermes.errBusy": "该会话正在生成中,请等待完成或先停止",
|
|
146
|
+
"hermes.errBadWorkspace": "该目录不存在或不可用",
|
|
147
|
+
"hermes.logWorkspaceSwitched": "切换工作区: {path}",
|
|
148
|
+
"hermes.errWorkspaceMissing": "工作区不存在: {dir}",
|
|
149
|
+
"hermes.errStartFailed": "启动失败: {message}",
|
|
150
|
+
"hermes.msgStarted": "Hermes 适配器已启动(Ctrl+C 退出)",
|
|
151
|
+
"hermes.logAbortSent": "已发送中止 (session={session})",
|
|
152
|
+
"hermes.logPromptFailed": "session.prompt 失败: {message}",
|
|
153
|
+
"hermes.logTurnError": "回合出错 (session={session}): {message}",
|
|
154
|
+
"hermes.logPairForced": "--pair:已强制申请配对码(仅本次)",
|
|
155
|
+
"hermes.pairingStillClaimed": "已绑定手机账号:此配对码仅用于同账号新设备重新配对,当前设备可直接从手机「我的电脑」连接",
|
|
156
|
+
"hermes.logPairNoRelay": "未配置中继地址,无法申请配对码",
|
|
157
|
+
"hermes.errSpawnHermes": "无法启动 Hermes({bin}):请确认已安装({err})",
|
|
158
|
+
"hermes.errHermesExit": "hermes 退出({code}): {err}",
|
|
159
|
+
"hermes.logSessionUpdated": "会话已更新 (session={session})",
|
|
160
|
+
"hermes.errNoInject": "手机消息注入不可用(当前会话非交互式或进程未就绪)",
|
|
161
|
+
"hermes.pairNoRelay": "无法连接中继(relay 不可达或 websockets 缺失)",
|
|
162
|
+
"hermes.pairTimeout": "申请配对码超时(中继未响应)",
|
|
163
|
+
"hermes.errToolPair": "tunnelbox_pair 失败: {err}",
|
|
164
|
+
"hermes.errToolStatus": "tunnelbox_status 失败: {err}",
|
|
165
|
+
"hermes.cliUsage": "用法: /tunnelbox <pair|status>\n pair 向中继申请手机配对码并打印\n status 显示中继/绑定/连接状态"
|
|
166
|
+
}
|