@tunnelbox/dsh-tunnelbox 0.1.21 → 0.1.22
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/index.mjs +361 -22
- package/package.json +2 -2
package/dist/index.mjs
CHANGED
|
@@ -455,7 +455,45 @@ var zh_CN_default = {
|
|
|
455
455
|
"adapter.errCursorExit": "Cursor CLI \u9000\u51FA({code}): {err}",
|
|
456
456
|
"adapter.errCursorSpawn": "\u65E0\u6CD5\u542F\u52A8 Cursor CLI\uFF08agent\uFF09\uFF1A\u8BF7\u786E\u8BA4\u5DF2\u5B89\u88C5\u5E76\u767B\u5F55\uFF08{message}\uFF09",
|
|
457
457
|
"adapter.errCursorStart": "Cursor CLI \u542F\u52A8\u5931\u8D25: {message}",
|
|
458
|
-
"adapter.errCursorGeneric": "Cursor \u51FA\u9519"
|
|
458
|
+
"adapter.errCursorGeneric": "Cursor \u51FA\u9519",
|
|
459
|
+
"qr.downloadApp": "\u4E0B\u8F7D tunnelbox App\uFF08Android / iOS\uFF09\uFF1A{url}",
|
|
460
|
+
"adapter.logLegacyHookRemoved": "\u5DF2\u79FB\u9664\u65E7\u7684 PermissionRequest hook\uFF08hooks.json\uFF09",
|
|
461
|
+
"adapter.errAppServerNotRunning": "codex app-server \u672A\u8FD0\u884C",
|
|
462
|
+
"adapter.errAppServerTimeout": "app-server \u8BF7\u6C42\u8D85\u65F6\uFF1A{method}",
|
|
463
|
+
"adapter.errAppServerStopped": "app-server \u5BA2\u6237\u7AEF\u5DF2\u505C\u6B62",
|
|
464
|
+
"adapter.errAppServerExited": "codex app-server \u9000\u51FA\uFF08code={code} signal={signal}\uFF09",
|
|
465
|
+
"adapter.errAppServerError": "app-server \u9519\u8BEF\uFF1A{message}",
|
|
466
|
+
"adapter.logAppServerStderr": "app-server\uFF1A{line}",
|
|
467
|
+
"adapter.logAppServerExited": "app-server \u9000\u51FA\uFF08code={code} signal={signal}\uFF09",
|
|
468
|
+
"adapter.errDshGenerate": "dsh \u751F\u6210\u51FA\u9519",
|
|
469
|
+
"adapter.unknown": "\u672A\u77E5",
|
|
470
|
+
"adapter.errGatewayClientMissing": "gateway client \u672A\u521B\u5EFA",
|
|
471
|
+
"adapter.errGatewayNotConnected": "gateway \u672A\u8FDE\u63A5",
|
|
472
|
+
"adapter.sessionTitleWithId": "{name} \u4F1A\u8BDD {id}",
|
|
473
|
+
"adapter.promptApproveTool": "{name} \u8BF7\u6C42\u6279\u51C6\u8FD0\u884C {tool}",
|
|
474
|
+
"index.log.serverStart": "opencode server={server} baseUrl={baseUrl} auth={auth} lang={lang}",
|
|
475
|
+
"agent.err.http": "HTTP {status}\uFF1A{text}",
|
|
476
|
+
"claude.promptUrl": "URL\uFF1A{url}",
|
|
477
|
+
"hermes.errBridgeNotRunning": "bridge loop \u672A\u8FD0\u884C",
|
|
478
|
+
"hermes.errAskNoQuestion": "\u672A\u63D0\u4F9B\u95EE\u9898\u3002\u8BF7\u4F20\u5165 questions=[{question, choices?, multi_select?}, ...]\u3002",
|
|
479
|
+
"hermes.toolPairDesc": "\u5411 tunnelbox \u4E2D\u7EE7\u7533\u8BF7\u4E00\u6B21\u6027\u624B\u673A\u914D\u5BF9\u7801\uFF08\u4F9B\u624B\u673A tunnelbox App \u626B\u7801/\u8F93\u7801\u914D\u5BF9\uFF09\u3002\u5F53\u7528\u6237\u8BE2\u95EE\u5982\u4F55\u7528\u624B\u673A\u8FDE\u63A5/\u914D\u5BF9/\u626B\u7801/\u8FDC\u7A0B\u63A7\u5236\u672C\u673A\u65F6\u4F7F\u7528\u3002",
|
|
480
|
+
"hermes.toolPairRefreshDesc": "\u662F\u5426\u5F3A\u5236\u7533\u8BF7\u65B0\u914D\u5BF9\u7801\uFF08\u9ED8\u8BA4\u590D\u7528/\u5FFD\u7565\uFF09",
|
|
481
|
+
"hermes.toolStatusDesc": "\u8FD4\u56DE tunnelbox \u63D2\u4EF6\u72B6\u6001\uFF1A\u4E2D\u7EE7\u5730\u5740\u3001agent \u6807\u8BC6\u3001\u662F\u5426\u5DF2\u7ED1\u5B9A\u624B\u673A\u8D26\u53F7\u3001\u6570\u636E\u76EE\u5F55\u4E0E\u6700\u8FD1\u914D\u5BF9\u4FE1\u606F\u3002\u5F53\u7528\u6237\u8BE2\u95EE\u4E0E\u624B\u673A\u7684 tunnelbox \u8FDE\u63A5\u72B6\u6001/\u662F\u5426\u7ED1\u5B9A/\u4E2D\u7EE7\u5730\u5740\u65F6\u4F7F\u7528\u3002",
|
|
482
|
+
"hermes.toolAskDesc": "\u628A\u4E00\u4E2A\u95EE\u9898/\u9009\u62E9\u53D1\u5230\u7528\u6237\u7684 tunnelbox \u624B\u673A\uFF08\u8FDC\u7A0B UI\uFF09\u5E76\u7B49\u5F85\u5176\u9009\u62E9\u6216\u8F93\u5165\u3002\u8FD4\u56DE JSON\uFF1A{answered: bool, user_response: string|string[]|null}\u3002\u624B\u673A\u79BB\u7EBF\u6216\u8D85\u65F6\u4F1A answered=false\u3002",
|
|
483
|
+
"hermes.toolAskQuestionDesc": "\u8981\u95EE\u7684\u95EE\u9898\u6587\u672C",
|
|
484
|
+
"hermes.toolAskChoicesDesc": "\u9884\u7F6E\u9009\u9879\uFF08\u53EF\u9009\uFF1B\u6700\u591A 4 \u4E2A\uFF09",
|
|
485
|
+
"hermes.toolAskMultipleDesc": "\u662F\u5426\u591A\u9009\uFF08\u9700\u63D0\u4F9B choices\uFF09",
|
|
486
|
+
"hermes.cmdDesc": "tunnelbox\uFF1A\u624B\u673A\u914D\u5BF9 / \u8FDE\u63A5\u72B6\u6001",
|
|
487
|
+
"hermes.logConfigLoadFailed": "tunnelbox: \u8BFB\u53D6\u914D\u7F6E\u5931\u8D25\uFF0C\u4F7F\u7528\u9ED8\u8BA4\u503C: {err}",
|
|
488
|
+
"hermes.logRegisterToolsFailed": "tunnelbox: \u6CE8\u518C\u5DE5\u5177\u5931\u8D25: {err}",
|
|
489
|
+
"hermes.logRegisterCommandFailed": "tunnelbox: \u6CE8\u518C\u547D\u4EE4\u5931\u8D25: {err}",
|
|
490
|
+
"hermes.logRegisterSkillFailed": "tunnelbox: \u6CE8\u518C\u6280\u80FD\u5931\u8D25: {err}",
|
|
491
|
+
"hermes.logRegisterHooksFailed": "tunnelbox: \u6CE8\u518C hooks \u5931\u8D25: {err}",
|
|
492
|
+
"hermes.logRegisterApprovalFailed": "tunnelbox: \u6CE8\u518C approval transport \u5931\u8D25: {err}",
|
|
493
|
+
"hermes.logRegisterAskFailed": "tunnelbox: \u6CE8\u518C tunnelbox_ask \u5931\u8D25: {err}",
|
|
494
|
+
"hermes.logRegisterSystemPromptFailed": "tunnelbox: \u6CE8\u518C system prompt \u6BB5\u5931\u8D25: {err}",
|
|
495
|
+
"hermes.logBackgroundBridgeFailed": "tunnelbox: \u540E\u53F0\u6865\u542F\u52A8\u5931\u8D25: {err}",
|
|
496
|
+
"hermes.systemPromptAsk": "\u5F53\u4F60\u9700\u8981\u7528\u6237\u505A\u51B3\u5B9A/\u6F84\u6E05/\u9009\u62E9\uFF0C\u4E14\u5DF2\u8FDE\u63A5 tunnelbox \u624B\u673A\u65F6\uFF0C\u8BF7\u7528 `tunnelbox_ask` \u5DE5\u5177\u5728\u624B\u673A\u4E0A\u63D0\u95EE\uFF0C\u800C\u4E0D\u662F\u81EA\u884C\u731C\u6D4B\uFF1B\u7B49\u5230\u7528\u6237\u4F5C\u7B54\u540E\u518D\u7EE7\u7EED\u3002"
|
|
459
497
|
};
|
|
460
498
|
var zh_TW_default = {
|
|
461
499
|
"agent.err.createSession": "\u5EFA\u7ACB\u6703\u8A71\u5931\u6557",
|
|
@@ -762,7 +800,45 @@ var zh_TW_default = {
|
|
|
762
800
|
"adapter.errCursorExit": "Cursor CLI \u9000\u51FA({code}): {err}",
|
|
763
801
|
"adapter.errCursorSpawn": "\u7121\u6CD5\u555F\u52D5 Cursor CLI\uFF08agent\uFF09\uFF1A\u8ACB\u78BA\u8A8D\u5DF2\u5B89\u88DD\u4E26\u767B\u5165\uFF08{message}\uFF09",
|
|
764
802
|
"adapter.errCursorStart": "Cursor CLI \u555F\u52D5\u5931\u6557: {message}",
|
|
765
|
-
"adapter.errCursorGeneric": "Cursor \u51FA\u932F"
|
|
803
|
+
"adapter.errCursorGeneric": "Cursor \u51FA\u932F",
|
|
804
|
+
"qr.downloadApp": "\u4E0B\u8F09 tunnelbox App\uFF08Android / iOS\uFF09\uFF1A{url}",
|
|
805
|
+
"adapter.logLegacyHookRemoved": "\u5DF2\u79FB\u9664\u820A\u7684 PermissionRequest hook\uFF08hooks.json\uFF09",
|
|
806
|
+
"adapter.errAppServerNotRunning": "codex app-server \u672A\u57F7\u884C",
|
|
807
|
+
"adapter.errAppServerTimeout": "app-server \u8ACB\u6C42\u903E\u6642\uFF1A{method}",
|
|
808
|
+
"adapter.errAppServerStopped": "app-server \u7528\u6236\u7AEF\u5DF2\u505C\u6B62",
|
|
809
|
+
"adapter.errAppServerExited": "codex app-server \u7D50\u675F\uFF08code={code} signal={signal}\uFF09",
|
|
810
|
+
"adapter.errAppServerError": "app-server \u932F\u8AA4\uFF1A{message}",
|
|
811
|
+
"adapter.logAppServerStderr": "app-server\uFF1A{line}",
|
|
812
|
+
"adapter.logAppServerExited": "app-server \u7D50\u675F\uFF08code={code} signal={signal}\uFF09",
|
|
813
|
+
"adapter.errDshGenerate": "dsh \u7522\u751F\u932F\u8AA4",
|
|
814
|
+
"adapter.unknown": "\u672A\u77E5",
|
|
815
|
+
"adapter.errGatewayClientMissing": "gateway client \u672A\u5EFA\u7ACB",
|
|
816
|
+
"adapter.errGatewayNotConnected": "gateway \u672A\u9023\u7DDA",
|
|
817
|
+
"adapter.sessionTitleWithId": "{name} \u5DE5\u4F5C\u968E\u6BB5 {id}",
|
|
818
|
+
"adapter.promptApproveTool": "{name} \u8ACB\u6C42\u6279\u51C6\u57F7\u884C {tool}",
|
|
819
|
+
"index.log.serverStart": "opencode server={server} baseUrl={baseUrl} auth={auth} lang={lang}",
|
|
820
|
+
"agent.err.http": "HTTP {status}\uFF1A{text}",
|
|
821
|
+
"claude.promptUrl": "URL\uFF1A{url}",
|
|
822
|
+
"hermes.errBridgeNotRunning": "bridge loop \u672A\u57F7\u884C",
|
|
823
|
+
"hermes.errAskNoQuestion": "\u672A\u63D0\u4F9B\u554F\u984C\u3002\u8ACB\u50B3\u5165 questions=[{question, choices?, multi_select?}, ...]\u3002",
|
|
824
|
+
"hermes.toolPairDesc": "\u5411 tunnelbox \u4E2D\u7E7C\u7533\u8ACB\u4E00\u6B21\u6027\u624B\u6A5F\u914D\u5C0D\u78BC\uFF08\u4F9B\u624B\u6A5F tunnelbox App \u6383\u78BC/\u8F38\u78BC\u914D\u5C0D\uFF09\u3002\u7576\u4F7F\u7528\u8005\u8A62\u554F\u5982\u4F55\u7528\u624B\u6A5F\u9023\u7DDA/\u914D\u5C0D/\u6383\u78BC/\u9060\u7AEF\u63A7\u5236\u672C\u6A5F\u6642\u4F7F\u7528\u3002",
|
|
825
|
+
"hermes.toolPairRefreshDesc": "\u662F\u5426\u5F37\u5236\u7533\u8ACB\u65B0\u914D\u5C0D\u78BC\uFF08\u9810\u8A2D\u91CD\u7528/\u5FFD\u7565\uFF09",
|
|
826
|
+
"hermes.toolStatusDesc": "\u8FD4\u56DE tunnelbox \u5916\u639B\u72C0\u614B\uFF1A\u4E2D\u7E7C\u4F4D\u5740\u3001agent \u6A19\u8B58\u3001\u662F\u5426\u5DF2\u7D81\u5B9A\u624B\u6A5F\u5E33\u865F\u3001\u8CC7\u6599\u76EE\u9304\u8207\u6700\u8FD1\u914D\u5C0D\u8CC7\u8A0A\u3002\u7576\u4F7F\u7528\u8005\u8A62\u554F\u8207\u624B\u6A5F\u7684 tunnelbox \u9023\u7DDA\u72C0\u614B/\u662F\u5426\u7D81\u5B9A/\u4E2D\u7E7C\u4F4D\u5740\u6642\u4F7F\u7528\u3002",
|
|
827
|
+
"hermes.toolAskDesc": "\u628A\u4E00\u500B\u554F\u984C/\u9078\u64C7\u767C\u5230\u4F7F\u7528\u8005\u7684 tunnelbox \u624B\u6A5F\uFF08\u9060\u7AEF UI\uFF09\u4E26\u7B49\u5F85\u5176\u9078\u64C7\u6216\u8F38\u5165\u3002\u8FD4\u56DE JSON\uFF1A{answered: bool, user_response: string|string[]|null}\u3002\u624B\u6A5F\u96E2\u7DDA\u6216\u903E\u6642\u6703 answered=false\u3002",
|
|
828
|
+
"hermes.toolAskQuestionDesc": "\u8981\u554F\u7684\u554F\u984C\u6587\u5B57",
|
|
829
|
+
"hermes.toolAskChoicesDesc": "\u9810\u7F6E\u9078\u9805\uFF08\u53EF\u9078\uFF1B\u6700\u591A 4 \u500B\uFF09",
|
|
830
|
+
"hermes.toolAskMultipleDesc": "\u662F\u5426\u591A\u9078\uFF08\u9700\u63D0\u4F9B choices\uFF09",
|
|
831
|
+
"hermes.cmdDesc": "tunnelbox\uFF1A\u624B\u6A5F\u914D\u5C0D / \u9023\u7DDA\u72C0\u614B",
|
|
832
|
+
"hermes.logConfigLoadFailed": "tunnelbox: \u8B80\u53D6\u8A2D\u5B9A\u5931\u6557\uFF0C\u4F7F\u7528\u9810\u8A2D\u503C: {err}",
|
|
833
|
+
"hermes.logRegisterToolsFailed": "tunnelbox: \u8A3B\u518A\u5DE5\u5177\u5931\u6557: {err}",
|
|
834
|
+
"hermes.logRegisterCommandFailed": "tunnelbox: \u8A3B\u518A\u547D\u4EE4\u5931\u6557: {err}",
|
|
835
|
+
"hermes.logRegisterSkillFailed": "tunnelbox: \u8A3B\u518A\u6280\u80FD\u5931\u6557: {err}",
|
|
836
|
+
"hermes.logRegisterHooksFailed": "tunnelbox: \u8A3B\u518A hooks \u5931\u6557: {err}",
|
|
837
|
+
"hermes.logRegisterApprovalFailed": "tunnelbox: \u8A3B\u518A approval transport \u5931\u6557: {err}",
|
|
838
|
+
"hermes.logRegisterAskFailed": "tunnelbox: \u8A3B\u518A tunnelbox_ask \u5931\u6557: {err}",
|
|
839
|
+
"hermes.logRegisterSystemPromptFailed": "tunnelbox: \u8A3B\u518A system prompt \u6BB5\u5931\u6557: {err}",
|
|
840
|
+
"hermes.logBackgroundBridgeFailed": "tunnelbox: \u80CC\u666F\u6A4B\u555F\u52D5\u5931\u6557: {err}",
|
|
841
|
+
"hermes.systemPromptAsk": "\u7576\u4F60\u9700\u8981\u4F7F\u7528\u8005\u505A\u6C7A\u5B9A/\u6F84\u6E05/\u9078\u64C7\uFF0C\u4E14\u5DF2\u9023\u63A5 tunnelbox \u624B\u6A5F\u6642\uFF0C\u8ACB\u7528 `tunnelbox_ask` \u5DE5\u5177\u5728\u624B\u6A5F\u4E0A\u63D0\u554F\uFF0C\u800C\u4E0D\u662F\u81EA\u884C\u731C\u6E2C\uFF1B\u7B49\u5230\u4F7F\u7528\u8005\u4F5C\u7B54\u5F8C\u518D\u7E7C\u7E8C\u3002"
|
|
766
842
|
};
|
|
767
843
|
var en_US_default = {
|
|
768
844
|
"agent.err.createSession": "Failed to create session",
|
|
@@ -1069,7 +1145,45 @@ var en_US_default = {
|
|
|
1069
1145
|
"adapter.errCursorExit": "Cursor CLI exited ({code}): {err}",
|
|
1070
1146
|
"adapter.errCursorSpawn": "Cannot start Cursor CLI (agent): make sure it is installed and logged in ({message})",
|
|
1071
1147
|
"adapter.errCursorStart": "Cursor CLI failed to start: {message}",
|
|
1072
|
-
"adapter.errCursorGeneric": "Cursor error"
|
|
1148
|
+
"adapter.errCursorGeneric": "Cursor error",
|
|
1149
|
+
"qr.downloadApp": "Download the tunnelbox App (Android / iOS): {url}",
|
|
1150
|
+
"adapter.logLegacyHookRemoved": "Removed the legacy PermissionRequest hook (hooks.json)",
|
|
1151
|
+
"adapter.errAppServerNotRunning": "codex app-server is not running",
|
|
1152
|
+
"adapter.errAppServerTimeout": "app-server request timed out: {method}",
|
|
1153
|
+
"adapter.errAppServerStopped": "app-server client stopped",
|
|
1154
|
+
"adapter.errAppServerExited": "codex app-server exited (code={code} signal={signal})",
|
|
1155
|
+
"adapter.errAppServerError": "app-server error: {message}",
|
|
1156
|
+
"adapter.logAppServerStderr": "app-server: {line}",
|
|
1157
|
+
"adapter.logAppServerExited": "app-server exited (code={code} signal={signal})",
|
|
1158
|
+
"adapter.errDshGenerate": "dsh generation error",
|
|
1159
|
+
"adapter.unknown": "unknown",
|
|
1160
|
+
"adapter.errGatewayClientMissing": "gateway client not created",
|
|
1161
|
+
"adapter.errGatewayNotConnected": "gateway not connected",
|
|
1162
|
+
"adapter.sessionTitleWithId": "{name} session {id}",
|
|
1163
|
+
"adapter.promptApproveTool": "{name} requests approval to run {tool}",
|
|
1164
|
+
"index.log.serverStart": "opencode server={server} baseUrl={baseUrl} auth={auth} lang={lang}",
|
|
1165
|
+
"agent.err.http": "HTTP {status}: {text}",
|
|
1166
|
+
"claude.promptUrl": "URL: {url}",
|
|
1167
|
+
"hermes.errBridgeNotRunning": "bridge loop is not running",
|
|
1168
|
+
"hermes.errAskNoQuestion": "No question provided. Pass questions=[{question, choices?, multi_select?}, ...].",
|
|
1169
|
+
"hermes.toolPairDesc": "Request a one-time phone pairing code from the tunnelbox relay (for scanning/entering in the tunnelbox app). Use when the user asks how to connect/pair/scan or remotely control this machine from their phone.",
|
|
1170
|
+
"hermes.toolPairRefreshDesc": "Force requesting a new pairing code (default: reuse/ignore)",
|
|
1171
|
+
"hermes.toolStatusDesc": "Return tunnelbox plugin status: relay address, agent id, whether bound to a phone account, data directory, and latest pairing info. Use when the user asks about the phone connection status/binding/relay address.",
|
|
1172
|
+
"hermes.toolAskDesc": "Send a question/choice to the user's tunnelbox phone (remote UI) and wait for their selection or input. Returns JSON: {answered: bool, user_response: string|string[]|null}. If the phone is offline or times out, answered=false.",
|
|
1173
|
+
"hermes.toolAskQuestionDesc": "The question text to ask",
|
|
1174
|
+
"hermes.toolAskChoicesDesc": "Preset options (optional; up to 4)",
|
|
1175
|
+
"hermes.toolAskMultipleDesc": "Allow multiple selection (requires choices)",
|
|
1176
|
+
"hermes.cmdDesc": "tunnelbox: phone pairing / connection status",
|
|
1177
|
+
"hermes.logConfigLoadFailed": "tunnelbox: failed to read config, using defaults: {err}",
|
|
1178
|
+
"hermes.logRegisterToolsFailed": "tunnelbox: failed to register tools: {err}",
|
|
1179
|
+
"hermes.logRegisterCommandFailed": "tunnelbox: failed to register command: {err}",
|
|
1180
|
+
"hermes.logRegisterSkillFailed": "tunnelbox: failed to register skill: {err}",
|
|
1181
|
+
"hermes.logRegisterHooksFailed": "tunnelbox: failed to register hooks: {err}",
|
|
1182
|
+
"hermes.logRegisterApprovalFailed": "tunnelbox: failed to register approval transport: {err}",
|
|
1183
|
+
"hermes.logRegisterAskFailed": "tunnelbox: failed to register tunnelbox_ask: {err}",
|
|
1184
|
+
"hermes.logRegisterSystemPromptFailed": "tunnelbox: failed to register system prompt section: {err}",
|
|
1185
|
+
"hermes.logBackgroundBridgeFailed": "tunnelbox: background bridge failed to start: {err}",
|
|
1186
|
+
"hermes.systemPromptAsk": "When you need a decision, clarification, or choice from the user and a tunnelbox phone is attached, use the `tunnelbox_ask` tool to ask on their phone instead of guessing. Wait for their answer before proceeding."
|
|
1073
1187
|
};
|
|
1074
1188
|
var ja_JP_default = {
|
|
1075
1189
|
"agent.err.createSession": "\u30BB\u30C3\u30B7\u30E7\u30F3\u306E\u4F5C\u6210\u306B\u5931\u6557\u3057\u307E\u3057\u305F",
|
|
@@ -1376,7 +1490,45 @@ var ja_JP_default = {
|
|
|
1376
1490
|
"adapter.errCursorExit": "Cursor CLI \u304C\u7D42\u4E86\u3057\u307E\u3057\u305F\uFF08{code}\uFF09: {err}",
|
|
1377
1491
|
"adapter.errCursorSpawn": "Cursor CLI\uFF08agent\uFF09\u3092\u8D77\u52D5\u3067\u304D\u307E\u305B\u3093\u3002\u30A4\u30F3\u30B9\u30C8\u30FC\u30EB\u3068\u30ED\u30B0\u30A4\u30F3\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\uFF08{message}\uFF09",
|
|
1378
1492
|
"adapter.errCursorStart": "Cursor CLI \u306E\u8D77\u52D5\u306B\u5931\u6557\u3057\u307E\u3057\u305F: {message}",
|
|
1379
|
-
"adapter.errCursorGeneric": "Cursor \u30A8\u30E9\u30FC"
|
|
1493
|
+
"adapter.errCursorGeneric": "Cursor \u30A8\u30E9\u30FC",
|
|
1494
|
+
"qr.downloadApp": "tunnelbox App\uFF08Android / iOS\uFF09\u3092\u30C0\u30A6\u30F3\u30ED\u30FC\u30C9: {url}",
|
|
1495
|
+
"adapter.logLegacyHookRemoved": "\u65E7 PermissionRequest hook\uFF08hooks.json\uFF09\u3092\u524A\u9664\u3057\u307E\u3057\u305F",
|
|
1496
|
+
"adapter.errAppServerNotRunning": "codex app-server \u304C\u5B9F\u884C\u3055\u308C\u3066\u3044\u307E\u305B\u3093",
|
|
1497
|
+
"adapter.errAppServerTimeout": "app-server \u30EA\u30AF\u30A8\u30B9\u30C8\u304C\u30BF\u30A4\u30E0\u30A2\u30A6\u30C8\u3057\u307E\u3057\u305F: {method}",
|
|
1498
|
+
"adapter.errAppServerStopped": "app-server \u30AF\u30E9\u30A4\u30A2\u30F3\u30C8\u304C\u505C\u6B62\u3057\u307E\u3057\u305F",
|
|
1499
|
+
"adapter.errAppServerExited": "codex app-server \u304C\u7D42\u4E86\u3057\u307E\u3057\u305F\uFF08code={code} signal={signal}\uFF09",
|
|
1500
|
+
"adapter.errAppServerError": "app-server \u30A8\u30E9\u30FC: {message}",
|
|
1501
|
+
"adapter.logAppServerStderr": "app-server: {line}",
|
|
1502
|
+
"adapter.logAppServerExited": "app-server \u304C\u7D42\u4E86\u3057\u307E\u3057\u305F\uFF08code={code} signal={signal}\uFF09",
|
|
1503
|
+
"adapter.errDshGenerate": "dsh \u306E\u751F\u6210\u30A8\u30E9\u30FC",
|
|
1504
|
+
"adapter.unknown": "\u4E0D\u660E",
|
|
1505
|
+
"adapter.errGatewayClientMissing": "gateway \u30AF\u30E9\u30A4\u30A2\u30F3\u30C8\u304C\u4F5C\u6210\u3055\u308C\u3066\u3044\u307E\u305B\u3093",
|
|
1506
|
+
"adapter.errGatewayNotConnected": "gateway \u306B\u63A5\u7D9A\u3055\u308C\u3066\u3044\u307E\u305B\u3093",
|
|
1507
|
+
"adapter.sessionTitleWithId": "{name} \u30BB\u30C3\u30B7\u30E7\u30F3 {id}",
|
|
1508
|
+
"adapter.promptApproveTool": "{name} \u304C {tool} \u306E\u5B9F\u884C\u627F\u8A8D\u3092\u8981\u6C42\u3057\u3066\u3044\u307E\u3059",
|
|
1509
|
+
"index.log.serverStart": "opencode server={server} baseUrl={baseUrl} auth={auth} lang={lang}",
|
|
1510
|
+
"agent.err.http": "HTTP {status}: {text}",
|
|
1511
|
+
"claude.promptUrl": "URL: {url}",
|
|
1512
|
+
"hermes.errBridgeNotRunning": "bridge \u30EB\u30FC\u30D7\u304C\u5B9F\u884C\u3055\u308C\u3066\u3044\u307E\u305B\u3093",
|
|
1513
|
+
"hermes.errAskNoQuestion": "\u8CEA\u554F\u304C\u6307\u5B9A\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002questions=[{question, choices?, multi_select?}, ...] \u3092\u6E21\u3057\u3066\u304F\u3060\u3055\u3044\u3002",
|
|
1514
|
+
"hermes.toolPairDesc": "tunnelbox \u30EA\u30EC\u30FC\u304B\u3089\u4E00\u5EA6\u9650\u308A\u306E\u30B9\u30DE\u30DB\u30DA\u30A2\u30EA\u30F3\u30B0\u30B3\u30FC\u30C9\u3092\u53D6\u5F97\u3057\u307E\u3059\uFF08tunnelbox App \u3067\u306E\u30B9\u30AD\u30E3\u30F3/\u5165\u529B\u7528\uFF09\u3002\u30B9\u30DE\u30DB\u304B\u3089\u306E\u63A5\u7D9A/\u30DA\u30A2\u30EA\u30F3\u30B0/\u30B9\u30AD\u30E3\u30F3\u65B9\u6CD5\u3084\u672C\u6A5F\u306E\u30EA\u30E2\u30FC\u30C8\u64CD\u4F5C\u306B\u3064\u3044\u3066\u5C0B\u306D\u3089\u308C\u305F\u3068\u304D\u306B\u4F7F\u7528\u3057\u307E\u3059\u3002",
|
|
1515
|
+
"hermes.toolPairRefreshDesc": "\u65B0\u3057\u3044\u30DA\u30A2\u30EA\u30F3\u30B0\u30B3\u30FC\u30C9\u3092\u5F37\u5236\u7684\u306B\u8981\u6C42\u3059\u308B\u304B\uFF08\u65E2\u5B9A: \u518D\u5229\u7528/\u7121\u8996\uFF09",
|
|
1516
|
+
"hermes.toolStatusDesc": "tunnelbox \u30D7\u30E9\u30B0\u30A4\u30F3\u306E\u72B6\u614B\u3092\u8FD4\u3057\u307E\u3059: \u30EA\u30EC\u30FC\u30A2\u30C9\u30EC\u30B9\u3001agent id\u3001\u30B9\u30DE\u30DB\u30A2\u30AB\u30A6\u30F3\u30C8\u3078\u306E\u30D0\u30A4\u30F3\u30C9\u6709\u7121\u3001\u30C7\u30FC\u30BF\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u3001\u6700\u65B0\u306E\u30DA\u30A2\u30EA\u30F3\u30B0\u60C5\u5831\u3002\u30B9\u30DE\u30DB\u63A5\u7D9A\u72B6\u614B/\u30D0\u30A4\u30F3\u30C9/\u30EA\u30EC\u30FC\u30A2\u30C9\u30EC\u30B9\u306B\u3064\u3044\u3066\u5C0B\u306D\u3089\u308C\u305F\u3068\u304D\u306B\u4F7F\u7528\u3057\u307E\u3059\u3002",
|
|
1517
|
+
"hermes.toolAskDesc": "\u8CEA\u554F/\u9078\u629E\u3092\u30E6\u30FC\u30B6\u30FC\u306E tunnelbox \u30B9\u30DE\u30DB\uFF08\u30EA\u30E2\u30FC\u30C8 UI\uFF09\u306B\u9001\u308A\u3001\u9078\u629E\u307E\u305F\u306F\u5165\u529B\u304C\u3042\u308B\u307E\u3067\u5F85\u3061\u307E\u3059\u3002JSON \u3092\u8FD4\u3057\u307E\u3059: {answered: bool, user_response: string|string[]|null}\u3002\u30B9\u30DE\u30DB\u304C\u30AA\u30D5\u30E9\u30A4\u30F3\u307E\u305F\u306F\u30BF\u30A4\u30E0\u30A2\u30A6\u30C8\u306E\u5834\u5408\u306F answered=false\u3002",
|
|
1518
|
+
"hermes.toolAskQuestionDesc": "\u5C0B\u306D\u308B\u8CEA\u554F\u30C6\u30AD\u30B9\u30C8",
|
|
1519
|
+
"hermes.toolAskChoicesDesc": "\u30D7\u30EA\u30BB\u30C3\u30C8\u9078\u629E\u80A2\uFF08\u4EFB\u610F\u3001\u6700\u5927 4 \u3064\uFF09",
|
|
1520
|
+
"hermes.toolAskMultipleDesc": "\u8907\u6570\u9078\u629E\u3092\u8A31\u53EF\uFF08choices \u304C\u5FC5\u8981\uFF09",
|
|
1521
|
+
"hermes.cmdDesc": "tunnelbox: \u30B9\u30DE\u30DB\u30DA\u30A2\u30EA\u30F3\u30B0 / \u63A5\u7D9A\u72B6\u614B",
|
|
1522
|
+
"hermes.logConfigLoadFailed": "tunnelbox: \u8A2D\u5B9A\u306E\u8AAD\u307F\u8FBC\u307F\u306B\u5931\u6557\u3001\u65E2\u5B9A\u5024\u3092\u4F7F\u7528: {err}",
|
|
1523
|
+
"hermes.logRegisterToolsFailed": "tunnelbox: \u30C4\u30FC\u30EB\u306E\u767B\u9332\u306B\u5931\u6557: {err}",
|
|
1524
|
+
"hermes.logRegisterCommandFailed": "tunnelbox: \u30B3\u30DE\u30F3\u30C9\u306E\u767B\u9332\u306B\u5931\u6557: {err}",
|
|
1525
|
+
"hermes.logRegisterSkillFailed": "tunnelbox: \u30B9\u30AD\u30EB\u306E\u767B\u9332\u306B\u5931\u6557: {err}",
|
|
1526
|
+
"hermes.logRegisterHooksFailed": "tunnelbox: hooks \u306E\u767B\u9332\u306B\u5931\u6557: {err}",
|
|
1527
|
+
"hermes.logRegisterApprovalFailed": "tunnelbox: approval transport \u306E\u767B\u9332\u306B\u5931\u6557: {err}",
|
|
1528
|
+
"hermes.logRegisterAskFailed": "tunnelbox: tunnelbox_ask \u306E\u767B\u9332\u306B\u5931\u6557: {err}",
|
|
1529
|
+
"hermes.logRegisterSystemPromptFailed": "tunnelbox: system prompt \u30BB\u30AF\u30B7\u30E7\u30F3\u306E\u767B\u9332\u306B\u5931\u6557: {err}",
|
|
1530
|
+
"hermes.logBackgroundBridgeFailed": "tunnelbox: \u30D0\u30C3\u30AF\u30B0\u30E9\u30A6\u30F3\u30C9\u30D6\u30EA\u30C3\u30B8\u306E\u8D77\u52D5\u306B\u5931\u6557: {err}",
|
|
1531
|
+
"hermes.systemPromptAsk": "\u30E6\u30FC\u30B6\u30FC\u306B\u6C7A\u5B9A/\u78BA\u8A8D/\u9078\u629E\u3092\u6C42\u3081\u308B\u5FC5\u8981\u304C\u3042\u308A\u3001tunnelbox \u30B9\u30DE\u30DB\u304C\u63A5\u7D9A\u3055\u308C\u3066\u3044\u308B\u5834\u5408\u306F\u3001\u63A8\u6E2C\u305B\u305A `tunnelbox_ask` \u30C4\u30FC\u30EB\u3067\u30B9\u30DE\u30DB\u306B\u8CEA\u554F\u3057\u3066\u304F\u3060\u3055\u3044\u3002\u56DE\u7B54\u304C\u3042\u308B\u307E\u3067\u5F85\u3063\u3066\u304B\u3089\u7D9A\u884C\u3057\u307E\u3059\u3002"
|
|
1380
1532
|
};
|
|
1381
1533
|
var ko_KR_default = {
|
|
1382
1534
|
"agent.err.createSession": "\uC138\uC158 \uC0DD\uC131 \uC2E4\uD328",
|
|
@@ -1683,7 +1835,45 @@ var ko_KR_default = {
|
|
|
1683
1835
|
"adapter.errCursorExit": "Cursor CLI \uC885\uB8CC({code}): {err}",
|
|
1684
1836
|
"adapter.errCursorSpawn": "Cursor CLI(agent)\uB97C \uC2DC\uC791\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. \uC124\uCE58 \uBC0F \uB85C\uADF8\uC778\uC744 \uD655\uC778\uD558\uC138\uC694({message})",
|
|
1685
1837
|
"adapter.errCursorStart": "Cursor CLI \uC2DC\uC791 \uC2E4\uD328: {message}",
|
|
1686
|
-
"adapter.errCursorGeneric": "Cursor \uC624\uB958"
|
|
1838
|
+
"adapter.errCursorGeneric": "Cursor \uC624\uB958",
|
|
1839
|
+
"qr.downloadApp": "tunnelbox \uC571(Android / iOS) \uB2E4\uC6B4\uB85C\uB4DC: {url}",
|
|
1840
|
+
"adapter.logLegacyHookRemoved": "\uC774\uC804 PermissionRequest hook(hooks.json)\uC744 \uC81C\uAC70\uD588\uC2B5\uB2C8\uB2E4",
|
|
1841
|
+
"adapter.errAppServerNotRunning": "codex app-server\uAC00 \uC2E4\uD589 \uC911\uC774 \uC544\uB2D9\uB2C8\uB2E4",
|
|
1842
|
+
"adapter.errAppServerTimeout": "app-server \uC694\uCCAD \uC2DC\uAC04 \uCD08\uACFC: {method}",
|
|
1843
|
+
"adapter.errAppServerStopped": "app-server \uD074\uB77C\uC774\uC5B8\uD2B8\uAC00 \uC911\uC9C0\uB418\uC5C8\uC2B5\uB2C8\uB2E4",
|
|
1844
|
+
"adapter.errAppServerExited": "codex app-server \uC885\uB8CC(code={code} signal={signal})",
|
|
1845
|
+
"adapter.errAppServerError": "app-server \uC624\uB958: {message}",
|
|
1846
|
+
"adapter.logAppServerStderr": "app-server: {line}",
|
|
1847
|
+
"adapter.logAppServerExited": "app-server \uC885\uB8CC(code={code} signal={signal})",
|
|
1848
|
+
"adapter.errDshGenerate": "dsh \uC0DD\uC131 \uC624\uB958",
|
|
1849
|
+
"adapter.unknown": "\uC54C \uC218 \uC5C6\uC74C",
|
|
1850
|
+
"adapter.errGatewayClientMissing": "gateway \uD074\uB77C\uC774\uC5B8\uD2B8\uAC00 \uC0DD\uC131\uB418\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4",
|
|
1851
|
+
"adapter.errGatewayNotConnected": "gateway\uC5D0 \uC5F0\uACB0\uB418\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4",
|
|
1852
|
+
"adapter.sessionTitleWithId": "{name} \uC138\uC158 {id}",
|
|
1853
|
+
"adapter.promptApproveTool": "{name}\uC774(\uAC00) {tool} \uC2E4\uD589 \uC2B9\uC778\uC744 \uC694\uCCAD\uD569\uB2C8\uB2E4",
|
|
1854
|
+
"index.log.serverStart": "opencode server={server} baseUrl={baseUrl} auth={auth} lang={lang}",
|
|
1855
|
+
"agent.err.http": "HTTP {status}: {text}",
|
|
1856
|
+
"claude.promptUrl": "URL: {url}",
|
|
1857
|
+
"hermes.errBridgeNotRunning": "bridge \uB8E8\uD504\uAC00 \uC2E4\uD589 \uC911\uC774 \uC544\uB2D9\uB2C8\uB2E4",
|
|
1858
|
+
"hermes.errAskNoQuestion": "\uC9C8\uBB38\uC774 \uC81C\uACF5\uB418\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4. questions=[{question, choices?, multi_select?}, ...]\uB97C \uC804\uB2EC\uD558\uC138\uC694.",
|
|
1859
|
+
"hermes.toolPairDesc": "tunnelbox \uB9B4\uB808\uC774\uC5D0\uC11C \uC77C\uD68C\uC6A9 \uD734\uB300\uD3F0 \uD398\uC5B4\uB9C1 \uCF54\uB4DC\uB97C \uC694\uCCAD\uD569\uB2C8\uB2E4(tunnelbox \uC571\uC5D0\uC11C \uC2A4\uCE94/\uC785\uB825\uC6A9). \uC0AC\uC6A9\uC790\uAC00 \uD734\uB300\uD3F0\uC73C\uB85C \uC5F0\uACB0/\uD398\uC5B4\uB9C1/\uC2A4\uCE94 \uBC29\uBC95\uC774\uB098 \uC774 \uCEF4\uD4E8\uD130\uC758 \uC6D0\uACA9 \uC81C\uC5B4\uB97C \uBB3C\uC744 \uB54C \uC0AC\uC6A9\uD558\uC138\uC694.",
|
|
1860
|
+
"hermes.toolPairRefreshDesc": "\uC0C8 \uD398\uC5B4\uB9C1 \uCF54\uB4DC\uB97C \uAC15\uC81C\uB85C \uC694\uCCAD\uD560\uC9C0 \uC5EC\uBD80(\uAE30\uBCF8: \uC7AC\uC0AC\uC6A9/\uBB34\uC2DC)",
|
|
1861
|
+
"hermes.toolStatusDesc": "tunnelbox \uD50C\uB7EC\uADF8\uC778 \uC0C1\uD0DC\uB97C \uBC18\uD658\uD569\uB2C8\uB2E4: \uB9B4\uB808\uC774 \uC8FC\uC18C, agent id, \uD734\uB300\uD3F0 \uACC4\uC815 \uBC14\uC778\uB529 \uC5EC\uBD80, \uB370\uC774\uD130 \uB514\uB809\uD130\uB9AC, \uCD5C\uADFC \uD398\uC5B4\uB9C1 \uC815\uBCF4. \uD734\uB300\uD3F0 \uC5F0\uACB0 \uC0C1\uD0DC/\uBC14\uC778\uB529/\uB9B4\uB808\uC774 \uC8FC\uC18C\uB97C \uBB3C\uC744 \uB54C \uC0AC\uC6A9\uD558\uC138\uC694.",
|
|
1862
|
+
"hermes.toolAskDesc": "\uC9C8\uBB38/\uC120\uD0DD\uC744 \uC0AC\uC6A9\uC790\uC758 tunnelbox \uD734\uB300\uD3F0(\uC6D0\uACA9 UI)\uC73C\uB85C \uBCF4\uB0B4\uACE0 \uC120\uD0DD \uB610\uB294 \uC785\uB825\uC744 \uAE30\uB2E4\uB9BD\uB2C8\uB2E4. JSON \uBC18\uD658: {answered: bool, user_response: string|string[]|null}. \uD734\uB300\uD3F0\uC774 \uC624\uD504\uB77C\uC778\uC774\uAC70\uB098 \uC2DC\uAC04 \uCD08\uACFC\uBA74 answered=false.",
|
|
1863
|
+
"hermes.toolAskQuestionDesc": "\uC9C8\uBB38 \uD14D\uC2A4\uD2B8",
|
|
1864
|
+
"hermes.toolAskChoicesDesc": "\uC0AC\uC804 \uC124\uC815 \uC120\uD0DD\uC9C0(\uC120\uD0DD, \uCD5C\uB300 4\uAC1C)",
|
|
1865
|
+
"hermes.toolAskMultipleDesc": "\uB2E4\uC911 \uC120\uD0DD \uD5C8\uC6A9(choices \uD544\uC694)",
|
|
1866
|
+
"hermes.cmdDesc": "tunnelbox: \uD734\uB300\uD3F0 \uD398\uC5B4\uB9C1 / \uC5F0\uACB0 \uC0C1\uD0DC",
|
|
1867
|
+
"hermes.logConfigLoadFailed": "tunnelbox: \uC124\uC815 \uC77D\uAE30 \uC2E4\uD328, \uAE30\uBCF8\uAC12 \uC0AC\uC6A9: {err}",
|
|
1868
|
+
"hermes.logRegisterToolsFailed": "tunnelbox: \uB3C4\uAD6C \uB4F1\uB85D \uC2E4\uD328: {err}",
|
|
1869
|
+
"hermes.logRegisterCommandFailed": "tunnelbox: \uBA85\uB839 \uB4F1\uB85D \uC2E4\uD328: {err}",
|
|
1870
|
+
"hermes.logRegisterSkillFailed": "tunnelbox: \uC2A4\uD0AC \uB4F1\uB85D \uC2E4\uD328: {err}",
|
|
1871
|
+
"hermes.logRegisterHooksFailed": "tunnelbox: hooks \uB4F1\uB85D \uC2E4\uD328: {err}",
|
|
1872
|
+
"hermes.logRegisterApprovalFailed": "tunnelbox: approval transport \uB4F1\uB85D \uC2E4\uD328: {err}",
|
|
1873
|
+
"hermes.logRegisterAskFailed": "tunnelbox: tunnelbox_ask \uB4F1\uB85D \uC2E4\uD328: {err}",
|
|
1874
|
+
"hermes.logRegisterSystemPromptFailed": "tunnelbox: system prompt \uC139\uC158 \uB4F1\uB85D \uC2E4\uD328: {err}",
|
|
1875
|
+
"hermes.logBackgroundBridgeFailed": "tunnelbox: \uBC31\uADF8\uB77C\uC6B4\uB4DC \uBE0C\uB9AC\uC9C0 \uC2DC\uC791 \uC2E4\uD328: {err}",
|
|
1876
|
+
"hermes.systemPromptAsk": "\uC0AC\uC6A9\uC790\uC5D0\uAC8C \uACB0\uC815/\uD655\uC778/\uC120\uD0DD\uC774 \uD544\uC694\uD558\uACE0 tunnelbox \uD734\uB300\uD3F0\uC774 \uC5F0\uACB0\uB418\uC5B4 \uC788\uC73C\uBA74 \uCD94\uCE21\uD558\uC9C0 \uB9D0\uACE0 `tunnelbox_ask` \uB3C4\uAD6C\uB85C \uD734\uB300\uD3F0\uC5D0\uC11C \uC9C8\uBB38\uD558\uC138\uC694. \uC0AC\uC6A9\uC790\uAC00 \uB2F5\uD560 \uB54C\uAE4C\uC9C0 \uAE30\uB2E4\uB9B0 \uD6C4 \uC9C4\uD589\uD558\uC138\uC694."
|
|
1687
1877
|
};
|
|
1688
1878
|
var fr_FR_default = {
|
|
1689
1879
|
"agent.err.createSession": "\xC9chec de la cr\xE9ation de la session",
|
|
@@ -1990,7 +2180,45 @@ var fr_FR_default = {
|
|
|
1990
2180
|
"adapter.errCursorExit": "Cursor CLI arr\xEAt\xE9 ({code}) : {err}",
|
|
1991
2181
|
"adapter.errCursorSpawn": "Impossible de d\xE9marrer Cursor CLI (agent) : v\xE9rifiez qu'il est install\xE9 et connect\xE9 ({message})",
|
|
1992
2182
|
"adapter.errCursorStart": "\xC9chec du d\xE9marrage de Cursor CLI : {message}",
|
|
1993
|
-
"adapter.errCursorGeneric": "Erreur Cursor"
|
|
2183
|
+
"adapter.errCursorGeneric": "Erreur Cursor",
|
|
2184
|
+
"qr.downloadApp": "T\xE9l\xE9charger l'application tunnelbox (Android / iOS) : {url}",
|
|
2185
|
+
"adapter.logLegacyHookRemoved": "Ancien hook PermissionRequest supprim\xE9 (hooks.json)",
|
|
2186
|
+
"adapter.errAppServerNotRunning": "codex app-server n'est pas en cours d'ex\xE9cution",
|
|
2187
|
+
"adapter.errAppServerTimeout": "D\xE9lai d\xE9pass\xE9 pour la requ\xEAte app-server : {method}",
|
|
2188
|
+
"adapter.errAppServerStopped": "Client app-server arr\xEAt\xE9",
|
|
2189
|
+
"adapter.errAppServerExited": "codex app-server arr\xEAt\xE9 (code={code} signal={signal})",
|
|
2190
|
+
"adapter.errAppServerError": "Erreur app-server : {message}",
|
|
2191
|
+
"adapter.logAppServerStderr": "app-server : {line}",
|
|
2192
|
+
"adapter.logAppServerExited": "app-server arr\xEAt\xE9 (code={code} signal={signal})",
|
|
2193
|
+
"adapter.errDshGenerate": "Erreur de g\xE9n\xE9ration dsh",
|
|
2194
|
+
"adapter.unknown": "inconnu",
|
|
2195
|
+
"adapter.errGatewayClientMissing": "Client gateway non cr\xE9\xE9",
|
|
2196
|
+
"adapter.errGatewayNotConnected": "Gateway non connect\xE9",
|
|
2197
|
+
"adapter.sessionTitleWithId": "session {name} {id}",
|
|
2198
|
+
"adapter.promptApproveTool": "{name} demande l'approbation d'ex\xE9cuter {tool}",
|
|
2199
|
+
"index.log.serverStart": "opencode server={server} baseUrl={baseUrl} auth={auth} lang={lang}",
|
|
2200
|
+
"agent.err.http": "HTTP {status} : {text}",
|
|
2201
|
+
"claude.promptUrl": "URL : {url}",
|
|
2202
|
+
"hermes.errBridgeNotRunning": "La boucle bridge n'est pas en cours d'ex\xE9cution",
|
|
2203
|
+
"hermes.errAskNoQuestion": "Aucune question fournie. Passez questions=[{question, choices?, multi_select?}, ...].",
|
|
2204
|
+
"hermes.toolPairDesc": "Demande un code d'appairage t\xE9l\xE9phone \xE0 usage unique au relais tunnelbox (pour le scan/la saisie dans l'app tunnelbox). \xC0 utiliser quand l'utilisateur demande comment se connecter/s'appairer/scanner ou contr\xF4ler cet ordinateur depuis son t\xE9l\xE9phone.",
|
|
2205
|
+
"hermes.toolPairRefreshDesc": "Forcer la demande d'un nouveau code d'appairage (par d\xE9faut : r\xE9utiliser/ignorer)",
|
|
2206
|
+
"hermes.toolStatusDesc": "Renvoie l'\xE9tat du plugin tunnelbox : adresse du relais, id de l'agent, liaison \xE0 un compte t\xE9l\xE9phone, r\xE9pertoire de donn\xE9es et derni\xE8res infos d'appairage. \xC0 utiliser quand l'utilisateur demande l'\xE9tat de connexion/la liaison/l'adresse du relais.",
|
|
2207
|
+
"hermes.toolAskDesc": "Envoie une question/un choix au t\xE9l\xE9phone tunnelbox de l'utilisateur (UI distante) et attend sa s\xE9lection ou saisie. Renvoie un JSON : {answered: bool, user_response: string|string[]|null}. Si le t\xE9l\xE9phone est hors ligne ou d\xE9passe le d\xE9lai, answered=false.",
|
|
2208
|
+
"hermes.toolAskQuestionDesc": "Le texte de la question \xE0 poser",
|
|
2209
|
+
"hermes.toolAskChoicesDesc": "Options pr\xE9d\xE9finies (facultatif ; jusqu'\xE0 4)",
|
|
2210
|
+
"hermes.toolAskMultipleDesc": "Autoriser la s\xE9lection multiple (n\xE9cessite choices)",
|
|
2211
|
+
"hermes.cmdDesc": "tunnelbox : appairage t\xE9l\xE9phone / \xE9tat de connexion",
|
|
2212
|
+
"hermes.logConfigLoadFailed": "tunnelbox : \xE9chec de lecture de la config, valeurs par d\xE9faut : {err}",
|
|
2213
|
+
"hermes.logRegisterToolsFailed": "tunnelbox : \xE9chec d'enregistrement des outils : {err}",
|
|
2214
|
+
"hermes.logRegisterCommandFailed": "tunnelbox : \xE9chec d'enregistrement de la commande : {err}",
|
|
2215
|
+
"hermes.logRegisterSkillFailed": "tunnelbox : \xE9chec d'enregistrement de la comp\xE9tence : {err}",
|
|
2216
|
+
"hermes.logRegisterHooksFailed": "tunnelbox : \xE9chec d'enregistrement des hooks : {err}",
|
|
2217
|
+
"hermes.logRegisterApprovalFailed": "tunnelbox : \xE9chec d'enregistrement du transport d'approbation : {err}",
|
|
2218
|
+
"hermes.logRegisterAskFailed": "tunnelbox : \xE9chec d'enregistrement de tunnelbox_ask : {err}",
|
|
2219
|
+
"hermes.logRegisterSystemPromptFailed": "tunnelbox : \xE9chec d'enregistrement de la section du prompt syst\xE8me : {err}",
|
|
2220
|
+
"hermes.logBackgroundBridgeFailed": "tunnelbox : \xE9chec du d\xE9marrage du pont en arri\xE8re-plan : {err}",
|
|
2221
|
+
"hermes.systemPromptAsk": "Lorsque vous avez besoin d'une d\xE9cision, d'une clarification ou d'un choix de l'utilisateur et qu'un t\xE9l\xE9phone tunnelbox est associ\xE9, utilisez l'outil `tunnelbox_ask` pour poser la question sur son t\xE9l\xE9phone au lieu de deviner. Attendez sa r\xE9ponse avant de continuer."
|
|
1994
2222
|
};
|
|
1995
2223
|
var de_DE_default = {
|
|
1996
2224
|
"agent.err.createSession": "Sitzung konnte nicht erstellt werden",
|
|
@@ -2297,7 +2525,45 @@ var de_DE_default = {
|
|
|
2297
2525
|
"adapter.errCursorExit": "Cursor CLI beendet ({code}): {err}",
|
|
2298
2526
|
"adapter.errCursorSpawn": "Cursor CLI (agent) kann nicht gestartet werden: Stellen Sie sicher, dass es installiert und angemeldet ist ({message})",
|
|
2299
2527
|
"adapter.errCursorStart": "Start von Cursor CLI fehlgeschlagen: {message}",
|
|
2300
|
-
"adapter.errCursorGeneric": "Cursor-Fehler"
|
|
2528
|
+
"adapter.errCursorGeneric": "Cursor-Fehler",
|
|
2529
|
+
"qr.downloadApp": "tunnelbox-App herunterladen (Android / iOS): {url}",
|
|
2530
|
+
"adapter.logLegacyHookRemoved": "Alter PermissionRequest-Hook entfernt (hooks.json)",
|
|
2531
|
+
"adapter.errAppServerNotRunning": "codex app-server l\xE4uft nicht",
|
|
2532
|
+
"adapter.errAppServerTimeout": "Zeit\xFCberschreitung bei app-server-Anfrage: {method}",
|
|
2533
|
+
"adapter.errAppServerStopped": "app-server-Client gestoppt",
|
|
2534
|
+
"adapter.errAppServerExited": "codex app-server beendet (code={code} signal={signal})",
|
|
2535
|
+
"adapter.errAppServerError": "app-server-Fehler: {message}",
|
|
2536
|
+
"adapter.logAppServerStderr": "app-server: {line}",
|
|
2537
|
+
"adapter.logAppServerExited": "app-server beendet (code={code} signal={signal})",
|
|
2538
|
+
"adapter.errDshGenerate": "dsh-Generierungsfehler",
|
|
2539
|
+
"adapter.unknown": "unbekannt",
|
|
2540
|
+
"adapter.errGatewayClientMissing": "Gateway-Client nicht erstellt",
|
|
2541
|
+
"adapter.errGatewayNotConnected": "Gateway nicht verbunden",
|
|
2542
|
+
"adapter.sessionTitleWithId": "{name}-Sitzung {id}",
|
|
2543
|
+
"adapter.promptApproveTool": "{name} fordert die Genehmigung zur Ausf\xFChrung von {tool} an",
|
|
2544
|
+
"index.log.serverStart": "opencode server={server} baseUrl={baseUrl} auth={auth} lang={lang}",
|
|
2545
|
+
"agent.err.http": "HTTP {status}: {text}",
|
|
2546
|
+
"claude.promptUrl": "URL: {url}",
|
|
2547
|
+
"hermes.errBridgeNotRunning": "Bridge-Schleife l\xE4uft nicht",
|
|
2548
|
+
"hermes.errAskNoQuestion": "Keine Frage angegeben. \xDCbergeben Sie questions=[{question, choices?, multi_select?}, ...].",
|
|
2549
|
+
"hermes.toolPairDesc": "Fordert einen einmaligen Telefon-Kopplungscode vom tunnelbox-Relay an (zum Scannen/Eingeben in der tunnelbox-App). Verwenden, wenn der Nutzer fragt, wie er sich verbindet/koppelt/scannt oder diesen Computer vom Telefon aus steuert.",
|
|
2550
|
+
"hermes.toolPairRefreshDesc": "Erzwingt die Anforderung eines neuen Kopplungscodes (Standard: wiederverwenden/ignorieren)",
|
|
2551
|
+
"hermes.toolStatusDesc": "Gibt den tunnelbox-Plugin-Status zur\xFCck: Relay-Adresse, Agent-ID, Bindung an ein Telefonkonto, Datenverzeichnis und letzte Kopplungsinfos. Verwenden, wenn der Nutzer nach Verbindungsstatus/Bindung/Relay-Adresse fragt.",
|
|
2552
|
+
"hermes.toolAskDesc": "Sendet eine Frage/Auswahl an das tunnelbox-Telefon des Nutzers (Remote-UI) und wartet auf Auswahl oder Eingabe. Gibt JSON zur\xFCck: {answered: bool, user_response: string|string[]|null}. Ist das Telefon offline oder tritt eine Zeit\xFCberschreitung auf, ist answered=false.",
|
|
2553
|
+
"hermes.toolAskQuestionDesc": "Der zu stellende Fragetext",
|
|
2554
|
+
"hermes.toolAskChoicesDesc": "Voreingestellte Optionen (optional; bis zu 4)",
|
|
2555
|
+
"hermes.toolAskMultipleDesc": "Mehrfachauswahl zulassen (erfordert choices)",
|
|
2556
|
+
"hermes.cmdDesc": "tunnelbox: Telefon-Kopplung / Verbindungsstatus",
|
|
2557
|
+
"hermes.logConfigLoadFailed": "tunnelbox: Konfiguration konnte nicht gelesen werden, Standardwerte werden verwendet: {err}",
|
|
2558
|
+
"hermes.logRegisterToolsFailed": "tunnelbox: Registrierung der Tools fehlgeschlagen: {err}",
|
|
2559
|
+
"hermes.logRegisterCommandFailed": "tunnelbox: Registrierung des Befehls fehlgeschlagen: {err}",
|
|
2560
|
+
"hermes.logRegisterSkillFailed": "tunnelbox: Registrierung der Skill fehlgeschlagen: {err}",
|
|
2561
|
+
"hermes.logRegisterHooksFailed": "tunnelbox: Registrierung der Hooks fehlgeschlagen: {err}",
|
|
2562
|
+
"hermes.logRegisterApprovalFailed": "tunnelbox: Registrierung des Approval-Transports fehlgeschlagen: {err}",
|
|
2563
|
+
"hermes.logRegisterAskFailed": "tunnelbox: Registrierung von tunnelbox_ask fehlgeschlagen: {err}",
|
|
2564
|
+
"hermes.logRegisterSystemPromptFailed": "tunnelbox: Registrierung des System-Prompt-Abschnitts fehlgeschlagen: {err}",
|
|
2565
|
+
"hermes.logBackgroundBridgeFailed": "tunnelbox: Start der Hintergrund-Bridge fehlgeschlagen: {err}",
|
|
2566
|
+
"hermes.systemPromptAsk": "Wenn Sie eine Entscheidung, Kl\xE4rung oder Auswahl vom Nutzer ben\xF6tigen und ein tunnelbox-Telefon verbunden ist, verwenden Sie das Tool `tunnelbox_ask`, um auf dessen Telefon zu fragen, statt zu raten. Warten Sie auf die Antwort, bevor Sie fortfahren."
|
|
2301
2567
|
};
|
|
2302
2568
|
var es_ES_default = {
|
|
2303
2569
|
"agent.err.createSession": "No se pudo crear la sesi\xF3n",
|
|
@@ -2604,7 +2870,45 @@ var es_ES_default = {
|
|
|
2604
2870
|
"adapter.errCursorExit": "Cursor CLI finaliz\xF3 ({code}): {err}",
|
|
2605
2871
|
"adapter.errCursorSpawn": "No se puede iniciar Cursor CLI (agent): comprueba que est\xE9 instalado y con sesi\xF3n iniciada ({message})",
|
|
2606
2872
|
"adapter.errCursorStart": "Fall\xF3 el inicio de Cursor CLI: {message}",
|
|
2607
|
-
"adapter.errCursorGeneric": "Error de Cursor"
|
|
2873
|
+
"adapter.errCursorGeneric": "Error de Cursor",
|
|
2874
|
+
"qr.downloadApp": "Descarga la app tunnelbox (Android / iOS): {url}",
|
|
2875
|
+
"adapter.logLegacyHookRemoved": "Se elimin\xF3 el hook PermissionRequest antiguo (hooks.json)",
|
|
2876
|
+
"adapter.errAppServerNotRunning": "codex app-server no est\xE1 en ejecuci\xF3n",
|
|
2877
|
+
"adapter.errAppServerTimeout": "Se agot\xF3 el tiempo de la solicitud a app-server: {method}",
|
|
2878
|
+
"adapter.errAppServerStopped": "Cliente app-server detenido",
|
|
2879
|
+
"adapter.errAppServerExited": "codex app-server finaliz\xF3 (code={code} signal={signal})",
|
|
2880
|
+
"adapter.errAppServerError": "Error de app-server: {message}",
|
|
2881
|
+
"adapter.logAppServerStderr": "app-server: {line}",
|
|
2882
|
+
"adapter.logAppServerExited": "app-server finaliz\xF3 (code={code} signal={signal})",
|
|
2883
|
+
"adapter.errDshGenerate": "Error de generaci\xF3n de dsh",
|
|
2884
|
+
"adapter.unknown": "desconocido",
|
|
2885
|
+
"adapter.errGatewayClientMissing": "Cliente de gateway no creado",
|
|
2886
|
+
"adapter.errGatewayNotConnected": "Gateway no conectado",
|
|
2887
|
+
"adapter.sessionTitleWithId": "sesi\xF3n de {name} {id}",
|
|
2888
|
+
"adapter.promptApproveTool": "{name} solicita aprobaci\xF3n para ejecutar {tool}",
|
|
2889
|
+
"index.log.serverStart": "opencode server={server} baseUrl={baseUrl} auth={auth} lang={lang}",
|
|
2890
|
+
"agent.err.http": "HTTP {status}: {text}",
|
|
2891
|
+
"claude.promptUrl": "URL: {url}",
|
|
2892
|
+
"hermes.errBridgeNotRunning": "El bucle de bridge no est\xE1 en ejecuci\xF3n",
|
|
2893
|
+
"hermes.errAskNoQuestion": "No se proporcion\xF3 ninguna pregunta. Pasa questions=[{question, choices?, multi_select?}, ...].",
|
|
2894
|
+
"hermes.toolPairDesc": "Solicita un c\xF3digo de emparejamiento telef\xF3nico de un solo uso al rel\xE9 tunnelbox (para escanear/introducir en la app tunnelbox). \xDAsalo cuando el usuario pregunte c\xF3mo conectar/emparejar/escanear o controlar este equipo desde el tel\xE9fono.",
|
|
2895
|
+
"hermes.toolPairRefreshDesc": "Forzar la solicitud de un nuevo c\xF3digo de emparejamiento (por defecto: reutilizar/ignorar)",
|
|
2896
|
+
"hermes.toolStatusDesc": "Devuelve el estado del plugin tunnelbox: direcci\xF3n del rel\xE9, id del agente, si est\xE1 vinculado a una cuenta de tel\xE9fono, directorio de datos e informaci\xF3n de emparejamiento reciente. \xDAsalo cuando el usuario pregunte por el estado de conexi\xF3n/vinculaci\xF3n/direcci\xF3n del rel\xE9.",
|
|
2897
|
+
"hermes.toolAskDesc": "Env\xEDa una pregunta/opci\xF3n al tel\xE9fono tunnelbox del usuario (UI remota) y espera su selecci\xF3n o entrada. Devuelve JSON: {answered: bool, user_response: string|string[]|null}. Si el tel\xE9fono est\xE1 desconectado o se agota el tiempo, answered=false.",
|
|
2898
|
+
"hermes.toolAskQuestionDesc": "El texto de la pregunta a realizar",
|
|
2899
|
+
"hermes.toolAskChoicesDesc": "Opciones predefinidas (opcional; hasta 4)",
|
|
2900
|
+
"hermes.toolAskMultipleDesc": "Permitir selecci\xF3n m\xFAltiple (requiere choices)",
|
|
2901
|
+
"hermes.cmdDesc": "tunnelbox: emparejamiento telef\xF3nico / estado de conexi\xF3n",
|
|
2902
|
+
"hermes.logConfigLoadFailed": "tunnelbox: no se pudo leer la configuraci\xF3n, usando valores por defecto: {err}",
|
|
2903
|
+
"hermes.logRegisterToolsFailed": "tunnelbox: fall\xF3 el registro de herramientas: {err}",
|
|
2904
|
+
"hermes.logRegisterCommandFailed": "tunnelbox: fall\xF3 el registro del comando: {err}",
|
|
2905
|
+
"hermes.logRegisterSkillFailed": "tunnelbox: fall\xF3 el registro de la skill: {err}",
|
|
2906
|
+
"hermes.logRegisterHooksFailed": "tunnelbox: fall\xF3 el registro de los hooks: {err}",
|
|
2907
|
+
"hermes.logRegisterApprovalFailed": "tunnelbox: fall\xF3 el registro del transporte de aprobaci\xF3n: {err}",
|
|
2908
|
+
"hermes.logRegisterAskFailed": "tunnelbox: fall\xF3 el registro de tunnelbox_ask: {err}",
|
|
2909
|
+
"hermes.logRegisterSystemPromptFailed": "tunnelbox: fall\xF3 el registro de la secci\xF3n del prompt del sistema: {err}",
|
|
2910
|
+
"hermes.logBackgroundBridgeFailed": "tunnelbox: fall\xF3 el inicio del puente en segundo plano: {err}",
|
|
2911
|
+
"hermes.systemPromptAsk": "Cuando necesites una decisi\xF3n, aclaraci\xF3n o elecci\xF3n del usuario y haya un tel\xE9fono tunnelbox vinculado, usa la herramienta `tunnelbox_ask` para preguntar en su tel\xE9fono en lugar de adivinar. Espera su respuesta antes de continuar."
|
|
2608
2912
|
};
|
|
2609
2913
|
var DEFAULT_LANG = "en-US";
|
|
2610
2914
|
var dicts = {
|
|
@@ -2641,6 +2945,11 @@ function detectSystemLang() {
|
|
|
2641
2945
|
const v = process.env[k];
|
|
2642
2946
|
if (v && v.trim()) return v.trim().split(".")[0];
|
|
2643
2947
|
}
|
|
2948
|
+
try {
|
|
2949
|
+
const loc = Intl.DateTimeFormat().resolvedOptions().locale;
|
|
2950
|
+
if (loc && loc.trim()) return loc.trim();
|
|
2951
|
+
} catch {
|
|
2952
|
+
}
|
|
2644
2953
|
return null;
|
|
2645
2954
|
}
|
|
2646
2955
|
function resolveLang(opts = {}) {
|
|
@@ -2729,6 +3038,35 @@ function writePairingJson(info, type) {
|
|
|
2729
3038
|
function injectedRelayUrl() {
|
|
2730
3039
|
return "wss://relay.tunnelbox.top" ? "wss://relay.tunnelbox.top".replace(/\/+$/, "") : "";
|
|
2731
3040
|
}
|
|
3041
|
+
function websiteUrl() {
|
|
3042
|
+
return (process.env.TUNNELBOX_WEBSITE_URL || "https://www.tunnelbox.top").trim();
|
|
3043
|
+
}
|
|
3044
|
+
function envFlag(raw) {
|
|
3045
|
+
const s = (raw || "").trim().toLowerCase();
|
|
3046
|
+
if (["1", "true", "yes", "on"].includes(s)) return true;
|
|
3047
|
+
if (["0", "false", "no", "off"].includes(s)) return false;
|
|
3048
|
+
return null;
|
|
3049
|
+
}
|
|
3050
|
+
function supportsHyperlinks() {
|
|
3051
|
+
const override = envFlag(process.env.TUNNELBOX_HYPERLINK);
|
|
3052
|
+
if (override !== null) return override;
|
|
3053
|
+
if (!process.stdout || !process.stdout.isTTY) return false;
|
|
3054
|
+
const env = process.env;
|
|
3055
|
+
if (env.WT_SESSION) return true;
|
|
3056
|
+
if (env.WEZTERM_PANE) return true;
|
|
3057
|
+
if (env.KITTY_WINDOW_ID) return true;
|
|
3058
|
+
if (env.VTE_VERSION) return true;
|
|
3059
|
+
if (env.KONSOLE_VERSION) return true;
|
|
3060
|
+
const tp = env.TERM_PROGRAM || "";
|
|
3061
|
+
return /^(iTerm\.app|WezTerm|vscode|Hyper|Apple_Terminal|Tabby|WarpTerminal)$/i.test(tp);
|
|
3062
|
+
}
|
|
3063
|
+
function hyperlink(url, text) {
|
|
3064
|
+
const label = text ?? url;
|
|
3065
|
+
if (!supportsHyperlinks()) return label;
|
|
3066
|
+
const OSC = "\x1B]8;;";
|
|
3067
|
+
const ST = "\x1B\\";
|
|
3068
|
+
return `${OSC}${url}${ST}${label}${OSC}${ST}`;
|
|
3069
|
+
}
|
|
2732
3070
|
function dispWidth(s) {
|
|
2733
3071
|
let w = 0;
|
|
2734
3072
|
for (const ch of s) w += ch.charCodeAt(0) > 255 ? 2 : 1;
|
|
@@ -2761,6 +3099,7 @@ async function printPairing(code, type, name2, lang) {
|
|
|
2761
3099
|
console.log("\u2502 " + padVisual(codeLine, W - 2) + " \u2502");
|
|
2762
3100
|
console.log("\u2514" + bar + "\u2518");
|
|
2763
3101
|
console.log(" " + hint);
|
|
3102
|
+
console.log(" " + tt("qr.downloadApp", { url: hyperlink(websiteUrl()) }));
|
|
2764
3103
|
console.log(" " + tt("qr.validFor"));
|
|
2765
3104
|
try {
|
|
2766
3105
|
const mod = await import("qrcode");
|
|
@@ -3048,7 +3387,7 @@ function sessionTitle(messages) {
|
|
|
3048
3387
|
}
|
|
3049
3388
|
return "";
|
|
3050
3389
|
}
|
|
3051
|
-
function streamEventTo(sessionID, event, emit, streamed) {
|
|
3390
|
+
function streamEventTo(sessionID, event, emit, streamed, t2) {
|
|
3052
3391
|
const e = event ?? {};
|
|
3053
3392
|
if (typeof e.type !== "string" || !e.data || typeof e.data !== "object") return;
|
|
3054
3393
|
const data = e.data;
|
|
@@ -3058,21 +3397,21 @@ function streamEventTo(sessionID, event, emit, streamed) {
|
|
|
3058
3397
|
switch (e.type) {
|
|
3059
3398
|
case "assistant/chunk": {
|
|
3060
3399
|
const chunk = data.chunk ?? {};
|
|
3061
|
-
const
|
|
3062
|
-
if (
|
|
3400
|
+
const ct = chunk.type || "";
|
|
3401
|
+
if (ct === "finish") {
|
|
3063
3402
|
if (chunk.reason?.kind === "error") {
|
|
3064
3403
|
streamed.add(key);
|
|
3065
|
-
const msg = chunk.reason.failure?.message || chunk.reason.error?.message || "
|
|
3404
|
+
const msg = chunk.reason.failure?.message || chunk.reason.error?.message || t2("adapter.errDshGenerate");
|
|
3066
3405
|
emit(sessionID, mid, { id: "err", type: "text", text: "[dsh] " + msg, complete: true });
|
|
3067
3406
|
}
|
|
3068
3407
|
return;
|
|
3069
3408
|
}
|
|
3070
|
-
if (
|
|
3409
|
+
if (ct === "text-delta" && typeof chunk.text === "string") {
|
|
3071
3410
|
streamed.add(key);
|
|
3072
3411
|
emit(sessionID, mid, { id: `t${chunk.index ?? 0}`, type: "text", delta: chunk.text });
|
|
3073
3412
|
return;
|
|
3074
3413
|
}
|
|
3075
|
-
if (
|
|
3414
|
+
if (ct === "reasoning-delta" && typeof chunk.text === "string") {
|
|
3076
3415
|
streamed.add(key);
|
|
3077
3416
|
emit(sessionID, mid, { id: `r${chunk.index ?? 0}`, type: "thinking", delta: chunk.text });
|
|
3078
3417
|
return;
|
|
@@ -3164,7 +3503,7 @@ async function sessionExists(sp, sessionId) {
|
|
|
3164
3503
|
const headers = await sp.list().catch(() => []);
|
|
3165
3504
|
return headers.some((h) => h.id === sessionId);
|
|
3166
3505
|
}
|
|
3167
|
-
async function sessionInfo(sp, h) {
|
|
3506
|
+
async function sessionInfo(sp, h, t2) {
|
|
3168
3507
|
let events = [];
|
|
3169
3508
|
let updated = h.createdAt;
|
|
3170
3509
|
try {
|
|
@@ -3175,19 +3514,19 @@ async function sessionInfo(sp, h) {
|
|
|
3175
3514
|
}
|
|
3176
3515
|
return {
|
|
3177
3516
|
id: h.id,
|
|
3178
|
-
title: titleOf(events) || "
|
|
3517
|
+
title: titleOf(events) || t2("adapter.newSessionTitle"),
|
|
3179
3518
|
created: h.createdAt,
|
|
3180
3519
|
updated,
|
|
3181
3520
|
status: "idle",
|
|
3182
3521
|
workspace: h.cwd
|
|
3183
3522
|
};
|
|
3184
3523
|
}
|
|
3185
|
-
async function listSessions(sp, workspace) {
|
|
3524
|
+
async function listSessions(sp, workspace, t2) {
|
|
3186
3525
|
const headers = await sp.list().catch(() => []);
|
|
3187
3526
|
const out = [];
|
|
3188
3527
|
for (const h of headers) {
|
|
3189
3528
|
if (workspace && h.cwd !== workspace) continue;
|
|
3190
|
-
const s = await sessionInfo(sp, h);
|
|
3529
|
+
const s = await sessionInfo(sp, h, t2);
|
|
3191
3530
|
if (s) out.push(s);
|
|
3192
3531
|
}
|
|
3193
3532
|
return out.sort((a, b) => b.updated - a.updated);
|
|
@@ -3245,7 +3584,7 @@ function findDir(dir, name2) {
|
|
|
3245
3584
|
}
|
|
3246
3585
|
|
|
3247
3586
|
// src/bridge.ts
|
|
3248
|
-
var VERSION = true ? "0.1.
|
|
3587
|
+
var VERSION = true ? "0.1.22" : "0.0.0-dev";
|
|
3249
3588
|
var AGENT_TYPE = "dsh";
|
|
3250
3589
|
var APPROVAL_TIMEOUT_MS = 12e4;
|
|
3251
3590
|
var ADAPTER_COMMANDS = [
|
|
@@ -3445,7 +3784,7 @@ ${err.stack}` : ""));
|
|
|
3445
3784
|
const payload = env.payload;
|
|
3446
3785
|
const sessions = /* @__PURE__ */ new Map();
|
|
3447
3786
|
if (sp) {
|
|
3448
|
-
for (const s of await listSessions(sp, payload?.workspace)) sessions.set(s.id, s);
|
|
3787
|
+
for (const s of await listSessions(sp, payload?.workspace, this.t)) sessions.set(s.id, s);
|
|
3449
3788
|
}
|
|
3450
3789
|
for (const [id, h] of this.handles) {
|
|
3451
3790
|
const events = [...liveSessionEvents(h.agent.session)];
|
|
@@ -3727,7 +4066,7 @@ ${err.stack}` : ""));
|
|
|
3727
4066
|
if (!gw || !this.remoteClientId) return;
|
|
3728
4067
|
void gw.dispatchRpc("$events/result", { args: { clientId: this.remoteClientId, eventId, outcome } }).then(
|
|
3729
4068
|
(res) => {
|
|
3730
|
-
if (res && res.ok === false) this.log(this.t("adapter.logResultRejected", { eventId, message: res.error?.message ?? "unknown" }));
|
|
4069
|
+
if (res && res.ok === false) this.log(this.t("adapter.logResultRejected", { eventId, message: res.error?.message ?? this.t("adapter.unknown") }));
|
|
3731
4070
|
},
|
|
3732
4071
|
(e) => this.log(this.t("adapter.logResultBackfillFailed", { eventId, message: e.message }))
|
|
3733
4072
|
);
|
|
@@ -4014,7 +4353,7 @@ ${err.stack}` : ""));
|
|
|
4014
4353
|
onSessionEvent(sessionID, event) {
|
|
4015
4354
|
const sid = String(sessionID);
|
|
4016
4355
|
if (!this.handles.has(sid)) return;
|
|
4017
|
-
streamEventTo(sid, event, (s, mid, part) => this.send(envelope("message.part", { sessionID: s, messageID: mid, part })), this.streamedTurns);
|
|
4356
|
+
streamEventTo(sid, event, (s, mid, part) => this.send(envelope("message.part", { sessionID: s, messageID: mid, part })), this.streamedTurns, this.t);
|
|
4018
4357
|
const t2 = event.type;
|
|
4019
4358
|
if (t2 === "turn/start") this.send(envelope("session.status", { sessionID: sid, status: "running" }));
|
|
4020
4359
|
else if (t2 === "turn/end") this.send(envelope("session.status", { sessionID: sid, status: "idle" }));
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tunnelbox/dsh-tunnelbox",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.22",
|
|
4
4
|
"description": "tunnelbox 的 dsh 原生 Cordis 插件:手机远程驱动 DeepSeek Harness(agent/session/tools/审批/中止)",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.mjs",
|
|
@@ -36,7 +36,7 @@
|
|
|
36
36
|
"@deepseek-ai/schemastery": "^3.18.1"
|
|
37
37
|
},
|
|
38
38
|
"devDependencies": {
|
|
39
|
-
"@tunnelbox/core": "0.1.
|
|
39
|
+
"@tunnelbox/core": "0.1.22",
|
|
40
40
|
"@types/node": "^22.0.0",
|
|
41
41
|
"esbuild": "^0.24.0",
|
|
42
42
|
"typescript": "^5.4.5"
|