@tunnelbox/dsh-tunnelbox 0.1.20 → 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 +601 -22
- package/package.json +2 -2
package/dist/index.mjs
CHANGED
|
@@ -425,7 +425,75 @@ var zh_CN_default = {
|
|
|
425
425
|
"adapter.logQuestionNative": "\u9009\u62E9\u8BF7\u6C42 \u2192 \u624B\u673A\u9009\u62E9\u5361 questionID={id} (session={session})",
|
|
426
426
|
"adapter.logPermissionNative": "\u5BA1\u6279\u8BF7\u6C42 \u2192 \u624B\u673A\u6743\u9650\u5361 permissionID={id} (session={session})",
|
|
427
427
|
"adapter.checkAppServerOk": "codex app-server \u53EF\u7528",
|
|
428
|
-
"adapter.checkAppServerMissing": "\u5F53\u524D Codex CLI \u4E0D\u652F\u6301 `codex app-server`\uFF08\u8BF7\u5347\u7EA7 Codex CLI\uFF09"
|
|
428
|
+
"adapter.checkAppServerMissing": "\u5F53\u524D Codex CLI \u4E0D\u652F\u6301 `codex app-server`\uFF08\u8BF7\u5347\u7EA7 Codex CLI\uFF09",
|
|
429
|
+
"adapter.warnCursorCliMissing": '\u672A\u627E\u5230 Cursor CLI \u53EF\u6267\u884C\u6587\u4EF6 "{bin}"\uFF1A\u8BF7\u5B89\u88C5\uFF08https://cursor.com/docs/cli\uFF09\uFF0C\u6216\u7528 TUNNELBOX_CURSOR_BIN \u6307\u5B9A\u8DEF\u5F84',
|
|
430
|
+
"adapter.checkCursorCliMissing": "\u672A\u627E\u5230 Cursor CLI \u53EF\u6267\u884C\u6587\u4EF6\uFF08{bin}\uFF09\uFF1A\u8BF7\u4ECE https://cursor.com/docs/cli \u5B89\u88C5",
|
|
431
|
+
"adapter.checkCursorAcpHint": "\u5DF2\u68C0\u6D4B\u5230 Cursor CLI\uFF1B\u5C06\u4F7F\u7528 ACP \u6A21\u5F0F\uFF08`agent acp`\uFF09\u63D0\u4F9B\u6D41\u5F0F/\u5BA1\u6279/\u9009\u62E9",
|
|
432
|
+
"adapter.errAcpSpawn": "\u542F\u52A8 cursor `agent acp` \u5931\u8D25\uFF1A{message}\uFF08\u8BF7\u786E\u8BA4 Cursor CLI \u652F\u6301 `agent acp`\uFF09",
|
|
433
|
+
"adapter.errAcpNoSession": "Cursor ACP \u672A\u8FD4\u56DE\u4F1A\u8BDD id",
|
|
434
|
+
"adapter.logResumeFailed": "\u4F1A\u8BDD\u6062\u590D\u5931\u8D25\uFF0C\u6539\u4E3A\u65B0\u5EFA\u4F1A\u8BDD\uFF1A{message}",
|
|
435
|
+
"adapter.logPlanNative": "\u8BA1\u5212\u5BA1\u6279 \u2192 \u624B\u673A\u5BA1\u6279\u5361 permissionID={id} (session={session})",
|
|
436
|
+
"adapter.errTimeout": "\u7B49\u5F85\u8D85\u65F6\uFF0C\u81EA\u52A8\u62D2\u7EDD\uFF08fail-closed\uFF09",
|
|
437
|
+
"adapter.planApprovalPrompt": "Cursor \u8BF7\u6C42\u6279\u51C6\u4E00\u9879\u8BA1\u5212",
|
|
438
|
+
"adapter.checkCursorHeader": "tunnelbox-cursor \u73AF\u5883\u81EA\u68C0",
|
|
439
|
+
"adapter.errAskBridge": "\u542F\u52A8 ask \u6865\u5931\u8D25\uFF1A{message}",
|
|
440
|
+
"adapter.logAskBridge": "MCP ask \u6865\u5DF2\u76D1\u542C {url}",
|
|
441
|
+
"cursor.mcpAskDesc": "\u8BA9\u7528\u6237\u5728\u624B\u673A\u4E0A\uFF08tunnelbox\uFF09\u505A\u9009\u62E9\uFF0C\u5E76\u963B\u585E\u7B49\u5F85\u5176\u4F5C\u7B54\u3002\u53EA\u8981\u9700\u8981\u7528\u6237\u5728\u7EE7\u7EED\u524D\u4E8E\u82E5\u5E72\u9009\u9879\u4E2D\u505A\u51FA\u9009\u62E9\uFF08\u5982\u9009\u83DC\u3001\u9009\u6A21\u5F0F\u3001\u9009\u65B9\u6848\uFF09\u5C31\u8C03\u7528\u5B83\u3002\u8FD4\u56DE\u7528\u6237\u6240\u9009\u7684\u9009\u9879\u6587\u672C\u3002",
|
|
442
|
+
"cursor.mcpAskTitleDesc": "\u624B\u673A\u5361\u7247\u4E0A\u663E\u793A\u7684\u6807\u9898\uFF08\u53EF\u9009\uFF09",
|
|
443
|
+
"cursor.mcpAskQuestionsDesc": "\u4E00\u4E2A\u6216\u591A\u4E2A\u95EE\u9898\uFF1B\u6BCF\u4E2A\u95EE\u9898\u5E26\u53EF\u9009\u9879",
|
|
444
|
+
"cursor.mcpPlanDesc": "\u8BA9\u7528\u6237\u5728\u624B\u673A\u4E0A\uFF08tunnelbox\uFF09\u6279\u51C6\u4E00\u9879\u8BA1\u5212\uFF0C\u5E76\u963B\u585E\u7B49\u5F85\u5176\u5E94\u7B54\u3002\u8FD4\u56DE\u8BA1\u5212\u662F\u5426\u88AB\u63A5\u53D7\u3002",
|
|
445
|
+
"cursor.mcpNoBridge": "tunnelbox ask \u6865\u4E0D\u53EF\u7528",
|
|
446
|
+
"cursor.mcpUnanswered": "\u7528\u6237\u672A\u5728\u624B\u673A\u4E0A\u4F5C\u7B54\uFF08\u79BB\u7EBF\u6216\u8D85\u65F6\uFF09\u3002\u8BF7\u7EE7\u7EED\uFF0C\u6216\u7528\u5BF9\u8BDD\u65B9\u5F0F\u8BE2\u95EE\u3002",
|
|
447
|
+
"cursor.mcpRejected": "\u7528\u6237\u5728\u624B\u673A\u4E0A\u62D2\u7EDD\u4E86\u8FD9\u4E2A\u63D0\u95EE\u3002",
|
|
448
|
+
"cursor.mcpAnswersHeader": "\u7528\u6237\uFF08\u624B\u673A\uFF09\u7684\u9009\u62E9\uFF1A",
|
|
449
|
+
"cursor.mcpAccepted": "\u7528\u6237\u5DF2\u63A5\u53D7\u8BE5\u8BA1\u5212\u3002",
|
|
450
|
+
"cursor.mcpDenied": "\u7528\u6237\u62D2\u7EDD\u4E86\u8BE5\u8BA1\u5212\u3002",
|
|
451
|
+
"cursor.mcpPlanUnanswered": "\u7528\u6237\u672A\u5728\u624B\u673A\u4E0A\u56DE\u5E94\u8BA1\u5212\uFF08\u79BB\u7EBF\u6216\u8D85\u65F6\uFF09\u3002",
|
|
452
|
+
"cursor.mcpAskNoQuestions": "\u672A\u63D0\u4F9B\u4EFB\u4F55\u95EE\u9898\u3002",
|
|
453
|
+
"cursor.mcpFailed": "tunnelbox ask \u8C03\u7528\u5931\u8D25",
|
|
454
|
+
"adapter.errCursorExitCode": "Cursor CLI \u9000\u51FA\u7801 {code}",
|
|
455
|
+
"adapter.errCursorExit": "Cursor CLI \u9000\u51FA({code}): {err}",
|
|
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
|
+
"adapter.errCursorStart": "Cursor CLI \u542F\u52A8\u5931\u8D25: {message}",
|
|
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"
|
|
429
497
|
};
|
|
430
498
|
var zh_TW_default = {
|
|
431
499
|
"agent.err.createSession": "\u5EFA\u7ACB\u6703\u8A71\u5931\u6557",
|
|
@@ -702,7 +770,75 @@ var zh_TW_default = {
|
|
|
702
770
|
"adapter.logQuestionNative": "\u9078\u64C7\u8ACB\u6C42 \u2192 \u624B\u6A5F\u9078\u64C7\u5361 questionID={id} (session={session})",
|
|
703
771
|
"adapter.logPermissionNative": "\u5BE9\u6279\u8ACB\u6C42 \u2192 \u624B\u6A5F\u6B0A\u9650\u5361 permissionID={id} (session={session})",
|
|
704
772
|
"adapter.checkAppServerOk": "codex app-server \u53EF\u7528",
|
|
705
|
-
"adapter.checkAppServerMissing": "\u76EE\u524D Codex CLI \u4E0D\u652F\u63F4 `codex app-server`\uFF08\u8ACB\u5347\u7D1A Codex CLI\uFF09"
|
|
773
|
+
"adapter.checkAppServerMissing": "\u76EE\u524D Codex CLI \u4E0D\u652F\u63F4 `codex app-server`\uFF08\u8ACB\u5347\u7D1A Codex CLI\uFF09",
|
|
774
|
+
"adapter.warnCursorCliMissing": '\u672A\u627E\u5230 Cursor CLI \u57F7\u884C\u6A94 "{bin}"\uFF1A\u8ACB\u5B89\u88DD\uFF08https://cursor.com/docs/cli\uFF09\uFF0C\u6216\u7528 TUNNELBOX_CURSOR_BIN \u6307\u5B9A\u8DEF\u5F91',
|
|
775
|
+
"adapter.checkCursorCliMissing": "\u672A\u627E\u5230 Cursor CLI \u57F7\u884C\u6A94\uFF08{bin}\uFF09\uFF1A\u8ACB\u5F9E https://cursor.com/docs/cli \u5B89\u88DD",
|
|
776
|
+
"adapter.checkCursorAcpHint": "\u5DF2\u5075\u6E2C\u5230 Cursor CLI\uFF1B\u5C07\u4F7F\u7528 ACP \u6A21\u5F0F\uFF08`agent acp`\uFF09\u63D0\u4F9B\u4E32\u6D41/\u5BE9\u6279/\u9078\u64C7",
|
|
777
|
+
"adapter.errAcpSpawn": "\u555F\u52D5 cursor `agent acp` \u5931\u6557\uFF1A{message}\uFF08\u8ACB\u78BA\u8A8D Cursor CLI \u652F\u63F4 `agent acp`\uFF09",
|
|
778
|
+
"adapter.errAcpNoSession": "Cursor ACP \u672A\u8FD4\u56DE\u5DE5\u4F5C\u968E\u6BB5 id",
|
|
779
|
+
"adapter.logResumeFailed": "\u5DE5\u4F5C\u968E\u6BB5\u6062\u5FA9\u5931\u6557\uFF0C\u6539\u70BA\u5EFA\u7ACB\u65B0\u5DE5\u4F5C\u968E\u6BB5\uFF1A{message}",
|
|
780
|
+
"adapter.logPlanNative": "\u8A08\u756B\u5BE9\u6279 \u2192 \u624B\u6A5F\u5BE9\u6279\u5361 permissionID={id} (session={session})",
|
|
781
|
+
"adapter.errTimeout": "\u7B49\u5F85\u903E\u6642\uFF0C\u81EA\u52D5\u62D2\u7D55\uFF08fail-closed\uFF09",
|
|
782
|
+
"adapter.planApprovalPrompt": "Cursor \u8ACB\u6C42\u6279\u51C6\u4E00\u9805\u8A08\u756B",
|
|
783
|
+
"adapter.checkCursorHeader": "tunnelbox-cursor \u74B0\u5883\u81EA\u6AA2",
|
|
784
|
+
"adapter.errAskBridge": "\u555F\u52D5 ask \u6A4B\u5931\u6557\uFF1A{message}",
|
|
785
|
+
"adapter.logAskBridge": "MCP ask \u6A4B\u5DF2\u76E3\u807D {url}",
|
|
786
|
+
"cursor.mcpAskDesc": "\u8B93\u4F7F\u7528\u8005\u5728\u624B\u6A5F\u4E0A\uFF08tunnelbox\uFF09\u505A\u9078\u64C7\uFF0C\u4E26\u963B\u585E\u7B49\u5F85\u5176\u4F5C\u7B54\u3002\u53EA\u8981\u9700\u8981\u4F7F\u7528\u8005\u5728\u7E7C\u7E8C\u524D\u65BC\u82E5\u5E72\u9078\u9805\u4E2D\u505A\u51FA\u9078\u64C7\uFF08\u5982\u9078\u9910\u3001\u9078\u6A21\u5F0F\u3001\u9078\u65B9\u6848\uFF09\u5C31\u547C\u53EB\u5B83\u3002\u56DE\u50B3\u4F7F\u7528\u8005\u6240\u9078\u7684\u9078\u9805\u6587\u5B57\u3002",
|
|
787
|
+
"cursor.mcpAskTitleDesc": "\u624B\u6A5F\u5361\u7247\u4E0A\u986F\u793A\u7684\u6A19\u984C\uFF08\u53EF\u9078\uFF09",
|
|
788
|
+
"cursor.mcpAskQuestionsDesc": "\u4E00\u500B\u6216\u591A\u500B\u554F\u984C\uFF1B\u6BCF\u500B\u554F\u984C\u5E36\u53EF\u9078\u9805",
|
|
789
|
+
"cursor.mcpPlanDesc": "\u8B93\u4F7F\u7528\u8005\u5728\u624B\u6A5F\u4E0A\uFF08tunnelbox\uFF09\u6279\u51C6\u4E00\u9805\u8A08\u756B\uFF0C\u4E26\u963B\u585E\u7B49\u5F85\u5176\u61C9\u7B54\u3002\u56DE\u50B3\u8A08\u756B\u662F\u5426\u88AB\u63A5\u53D7\u3002",
|
|
790
|
+
"cursor.mcpNoBridge": "tunnelbox ask \u6A4B\u4E0D\u53EF\u7528",
|
|
791
|
+
"cursor.mcpUnanswered": "\u4F7F\u7528\u8005\u672A\u5728\u624B\u6A5F\u4E0A\u4F5C\u7B54\uFF08\u96E2\u7DDA\u6216\u903E\u6642\uFF09\u3002\u8ACB\u7E7C\u7E8C\uFF0C\u6216\u7528\u5C0D\u8A71\u65B9\u5F0F\u8A62\u554F\u3002",
|
|
792
|
+
"cursor.mcpRejected": "\u4F7F\u7528\u8005\u5728\u624B\u6A5F\u4E0A\u62D2\u7D55\u4E86\u9019\u500B\u63D0\u554F\u3002",
|
|
793
|
+
"cursor.mcpAnswersHeader": "\u4F7F\u7528\u8005\uFF08\u624B\u6A5F\uFF09\u7684\u9078\u64C7\uFF1A",
|
|
794
|
+
"cursor.mcpAccepted": "\u4F7F\u7528\u8005\u5DF2\u63A5\u53D7\u8A72\u8A08\u756B\u3002",
|
|
795
|
+
"cursor.mcpDenied": "\u4F7F\u7528\u8005\u62D2\u7D55\u4E86\u8A72\u8A08\u756B\u3002",
|
|
796
|
+
"cursor.mcpPlanUnanswered": "\u4F7F\u7528\u8005\u672A\u5728\u624B\u6A5F\u4E0A\u56DE\u61C9\u8A08\u756B\uFF08\u96E2\u7DDA\u6216\u903E\u6642\uFF09\u3002",
|
|
797
|
+
"cursor.mcpAskNoQuestions": "\u672A\u63D0\u4F9B\u4EFB\u4F55\u554F\u984C\u3002",
|
|
798
|
+
"cursor.mcpFailed": "tunnelbox ask \u547C\u53EB\u5931\u6557",
|
|
799
|
+
"adapter.errCursorExitCode": "Cursor CLI \u9000\u51FA\u78BC {code}",
|
|
800
|
+
"adapter.errCursorExit": "Cursor CLI \u9000\u51FA({code}): {err}",
|
|
801
|
+
"adapter.errCursorSpawn": "\u7121\u6CD5\u555F\u52D5 Cursor CLI\uFF08agent\uFF09\uFF1A\u8ACB\u78BA\u8A8D\u5DF2\u5B89\u88DD\u4E26\u767B\u5165\uFF08{message}\uFF09",
|
|
802
|
+
"adapter.errCursorStart": "Cursor CLI \u555F\u52D5\u5931\u6557: {message}",
|
|
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"
|
|
706
842
|
};
|
|
707
843
|
var en_US_default = {
|
|
708
844
|
"agent.err.createSession": "Failed to create session",
|
|
@@ -979,7 +1115,75 @@ var en_US_default = {
|
|
|
979
1115
|
"adapter.logQuestionNative": "choice request -> phone choice card questionID={id} (session={session})",
|
|
980
1116
|
"adapter.logPermissionNative": "approval request -> phone approval card permissionID={id} (session={session})",
|
|
981
1117
|
"adapter.checkAppServerOk": "codex app-server available",
|
|
982
|
-
"adapter.checkAppServerMissing": "this Codex CLI does not support `codex app-server` (please upgrade Codex CLI)"
|
|
1118
|
+
"adapter.checkAppServerMissing": "this Codex CLI does not support `codex app-server` (please upgrade Codex CLI)",
|
|
1119
|
+
"adapter.warnCursorCliMissing": 'Cursor CLI executable "{bin}" not found; install it (https://cursor.com/docs/cli) or set TUNNELBOX_CURSOR_BIN to its path',
|
|
1120
|
+
"adapter.checkCursorCliMissing": "Cursor CLI executable not found ({bin}); install it from https://cursor.com/docs/cli",
|
|
1121
|
+
"adapter.checkCursorAcpHint": "Cursor CLI detected; ACP mode (`agent acp`) will provide streaming/approval/selection",
|
|
1122
|
+
"adapter.errAcpSpawn": "Failed to start cursor `agent acp`: {message} (make sure your Cursor CLI supports `agent acp`)",
|
|
1123
|
+
"adapter.errAcpNoSession": "Cursor ACP did not return a session id",
|
|
1124
|
+
"adapter.logResumeFailed": "Session resume failed, starting a new session: {message}",
|
|
1125
|
+
"adapter.logPlanNative": "plan approval -> phone approval card permissionID={id} (session={session})",
|
|
1126
|
+
"adapter.errTimeout": "Timed out, auto-rejected (fail-closed)",
|
|
1127
|
+
"adapter.planApprovalPrompt": "Cursor requests approval for a plan",
|
|
1128
|
+
"adapter.checkCursorHeader": "tunnelbox-cursor environment check",
|
|
1129
|
+
"adapter.errAskBridge": "Failed to start the ask bridge: {message}",
|
|
1130
|
+
"adapter.logAskBridge": "MCP ask bridge listening at {url}",
|
|
1131
|
+
"cursor.mcpAskDesc": "Ask the user to choose on their phone (tunnelbox) and block until they answer. Use this whenever you need the user to pick between options before continuing (e.g. choosing a dish, a mode, or a plan option). Returns the selected option label(s).",
|
|
1132
|
+
"cursor.mcpAskTitleDesc": "Optional title shown on the phone card",
|
|
1133
|
+
"cursor.mcpAskQuestionsDesc": "One or more questions; each has options for the user to pick",
|
|
1134
|
+
"cursor.mcpPlanDesc": "Ask the user to approve a plan on their phone (tunnelbox) and block until they respond. Returns whether the plan was accepted.",
|
|
1135
|
+
"cursor.mcpNoBridge": "tunnelbox ask bridge is not available",
|
|
1136
|
+
"cursor.mcpUnanswered": "The user did not answer on their phone (offline or timed out). Proceed or ask conversationally.",
|
|
1137
|
+
"cursor.mcpRejected": "The user rejected the question on their phone.",
|
|
1138
|
+
"cursor.mcpAnswersHeader": "User's answers (from their phone):",
|
|
1139
|
+
"cursor.mcpAccepted": "The user accepted the plan.",
|
|
1140
|
+
"cursor.mcpDenied": "The user rejected the plan.",
|
|
1141
|
+
"cursor.mcpPlanUnanswered": "The user did not respond to the plan on their phone (offline or timed out).",
|
|
1142
|
+
"cursor.mcpAskNoQuestions": "No questions were provided.",
|
|
1143
|
+
"cursor.mcpFailed": "tunnelbox ask failed",
|
|
1144
|
+
"adapter.errCursorExitCode": "Cursor CLI exited with code {code}",
|
|
1145
|
+
"adapter.errCursorExit": "Cursor CLI exited ({code}): {err}",
|
|
1146
|
+
"adapter.errCursorSpawn": "Cannot start Cursor CLI (agent): make sure it is installed and logged in ({message})",
|
|
1147
|
+
"adapter.errCursorStart": "Cursor CLI failed to start: {message}",
|
|
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."
|
|
983
1187
|
};
|
|
984
1188
|
var ja_JP_default = {
|
|
985
1189
|
"agent.err.createSession": "\u30BB\u30C3\u30B7\u30E7\u30F3\u306E\u4F5C\u6210\u306B\u5931\u6557\u3057\u307E\u3057\u305F",
|
|
@@ -1256,7 +1460,75 @@ var ja_JP_default = {
|
|
|
1256
1460
|
"adapter.logQuestionNative": "\u9078\u629E\u30EA\u30AF\u30A8\u30B9\u30C8 -> \u30B9\u30DE\u30DB\u9078\u629E\u30AB\u30FC\u30C9 questionID={id} (session={session})",
|
|
1257
1461
|
"adapter.logPermissionNative": "\u627F\u8A8D\u30EA\u30AF\u30A8\u30B9\u30C8 -> \u30B9\u30DE\u30DB\u627F\u8A8D\u30AB\u30FC\u30C9 permissionID={id} (session={session})",
|
|
1258
1462
|
"adapter.checkAppServerOk": "codex app-server \u5229\u7528\u53EF\u80FD",
|
|
1259
|
-
"adapter.checkAppServerMissing": "\u3053\u306E Codex CLI \u306F `codex app-server` \u306B\u5BFE\u5FDC\u3057\u3066\u3044\u307E\u305B\u3093\uFF08Codex CLI \u3092\u66F4\u65B0\u3057\u3066\u304F\u3060\u3055\u3044\uFF09"
|
|
1463
|
+
"adapter.checkAppServerMissing": "\u3053\u306E Codex CLI \u306F `codex app-server` \u306B\u5BFE\u5FDC\u3057\u3066\u3044\u307E\u305B\u3093\uFF08Codex CLI \u3092\u66F4\u65B0\u3057\u3066\u304F\u3060\u3055\u3044\uFF09",
|
|
1464
|
+
"adapter.warnCursorCliMissing": 'Cursor CLI \u306E\u5B9F\u884C\u30D5\u30A1\u30A4\u30EB "{bin}" \u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093\u3002\u30A4\u30F3\u30B9\u30C8\u30FC\u30EB\uFF08https://cursor.com/docs/cli\uFF09\u3059\u308B\u304B\u3001TUNNELBOX_CURSOR_BIN \u306B\u30D1\u30B9\u3092\u8A2D\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044',
|
|
1465
|
+
"adapter.checkCursorCliMissing": "Cursor CLI \u306E\u5B9F\u884C\u30D5\u30A1\u30A4\u30EB\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093\uFF08{bin}\uFF09\u3002https://cursor.com/docs/cli \u304B\u3089\u30A4\u30F3\u30B9\u30C8\u30FC\u30EB\u3057\u3066\u304F\u3060\u3055\u3044",
|
|
1466
|
+
"adapter.checkCursorAcpHint": "Cursor CLI \u3092\u691C\u51FA\u3057\u307E\u3057\u305F\u3002ACP \u30E2\u30FC\u30C9\uFF08`agent acp`\uFF09\u3067\u30B9\u30C8\u30EA\u30FC\u30DF\u30F3\u30B0/\u627F\u8A8D/\u9078\u629E\u3092\u63D0\u4F9B\u3057\u307E\u3059",
|
|
1467
|
+
"adapter.errAcpSpawn": "cursor `agent acp` \u306E\u8D77\u52D5\u306B\u5931\u6557\u3057\u307E\u3057\u305F: {message}\uFF08Cursor CLI \u304C `agent acp` \u306B\u5BFE\u5FDC\u3057\u3066\u3044\u308B\u304B\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\uFF09",
|
|
1468
|
+
"adapter.errAcpNoSession": "Cursor ACP \u304C\u30BB\u30C3\u30B7\u30E7\u30F3 id \u3092\u8FD4\u3057\u307E\u305B\u3093\u3067\u3057\u305F",
|
|
1469
|
+
"adapter.logResumeFailed": "\u30BB\u30C3\u30B7\u30E7\u30F3\u306E\u518D\u958B\u306B\u5931\u6557\u3057\u305F\u305F\u3081\u3001\u65B0\u898F\u30BB\u30C3\u30B7\u30E7\u30F3\u3092\u958B\u59CB\u3057\u307E\u3059: {message}",
|
|
1470
|
+
"adapter.logPlanNative": "\u30D7\u30E9\u30F3\u627F\u8A8D -> \u30B9\u30DE\u30DB\u306E\u627F\u8A8D\u30AB\u30FC\u30C9 permissionID={id} (session={session})",
|
|
1471
|
+
"adapter.errTimeout": "\u30BF\u30A4\u30E0\u30A2\u30A6\u30C8\u306E\u305F\u3081\u81EA\u52D5\u62D2\u5426\u3057\u307E\u3057\u305F\uFF08fail-closed\uFF09",
|
|
1472
|
+
"adapter.planApprovalPrompt": "Cursor \u304C\u30D7\u30E9\u30F3\u306E\u627F\u8A8D\u3092\u8981\u6C42\u3057\u3066\u3044\u307E\u3059",
|
|
1473
|
+
"adapter.checkCursorHeader": "tunnelbox-cursor \u74B0\u5883\u30C1\u30A7\u30C3\u30AF",
|
|
1474
|
+
"adapter.errAskBridge": "ask \u30D6\u30EA\u30C3\u30B8\u306E\u8D77\u52D5\u306B\u5931\u6557\u3057\u307E\u3057\u305F: {message}",
|
|
1475
|
+
"adapter.logAskBridge": "MCP ask \u30D6\u30EA\u30C3\u30B8\u304C {url} \u3067\u5F85\u3061\u53D7\u3051\u4E2D",
|
|
1476
|
+
"cursor.mcpAskDesc": "\u30E6\u30FC\u30B6\u30FC\u306B\u30B9\u30DE\u30DB\uFF08tunnelbox\uFF09\u3067\u9078\u629E\u3055\u305B\u3001\u56DE\u7B54\u304C\u3042\u308B\u307E\u3067\u30D6\u30ED\u30C3\u30AF\u3057\u307E\u3059\u3002\u7D9A\u884C\u524D\u306B\u30E6\u30FC\u30B6\u30FC\u304C\u9078\u629E\u80A2\u304B\u3089\u9078\u3076\u5FC5\u8981\u304C\u3042\u308B\u5834\u5408\uFF08\u6599\u7406\u30FB\u30E2\u30FC\u30C9\u30FB\u30D7\u30E9\u30F3\u6848\u306E\u9078\u629E\u306A\u3069\uFF09\u306B\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044\u3002\u9078\u629E\u3055\u308C\u305F\u9078\u629E\u80A2\u306E\u30E9\u30D9\u30EB\u3092\u8FD4\u3057\u307E\u3059\u3002",
|
|
1477
|
+
"cursor.mcpAskTitleDesc": "\u30B9\u30DE\u30DB\u306E\u30AB\u30FC\u30C9\u306B\u8868\u793A\u3059\u308B\u30BF\u30A4\u30C8\u30EB\uFF08\u4EFB\u610F\uFF09",
|
|
1478
|
+
"cursor.mcpAskQuestionsDesc": "1 \u3064\u4EE5\u4E0A\u306E\u8CEA\u554F\u3002\u5404\u8CEA\u554F\u306B\u306F\u9078\u629E\u80A2\u304C\u3042\u308A\u307E\u3059",
|
|
1479
|
+
"cursor.mcpPlanDesc": "\u30E6\u30FC\u30B6\u30FC\u306B\u30B9\u30DE\u30DB\uFF08tunnelbox\uFF09\u3067\u30D7\u30E9\u30F3\u306E\u627F\u8A8D\u3092\u6C42\u3081\u3001\u5FDC\u7B54\u304C\u3042\u308B\u307E\u3067\u30D6\u30ED\u30C3\u30AF\u3057\u307E\u3059\u3002\u627F\u8A8D\u3055\u308C\u305F\u304B\u3069\u3046\u304B\u3092\u8FD4\u3057\u307E\u3059\u3002",
|
|
1480
|
+
"cursor.mcpNoBridge": "tunnelbox ask \u30D6\u30EA\u30C3\u30B8\u304C\u5229\u7528\u3067\u304D\u307E\u305B\u3093",
|
|
1481
|
+
"cursor.mcpUnanswered": "\u30E6\u30FC\u30B6\u30FC\u306F\u30B9\u30DE\u30DB\u3067\u56DE\u7B54\u3057\u307E\u305B\u3093\u3067\u3057\u305F\uFF08\u30AA\u30D5\u30E9\u30A4\u30F3\u307E\u305F\u306F\u30BF\u30A4\u30E0\u30A2\u30A6\u30C8\uFF09\u3002\u7D9A\u884C\u3059\u308B\u304B\u3001\u4F1A\u8A71\u3067\u5C0B\u306D\u3066\u304F\u3060\u3055\u3044\u3002",
|
|
1482
|
+
"cursor.mcpRejected": "\u30E6\u30FC\u30B6\u30FC\u306F\u30B9\u30DE\u30DB\u3067\u8CEA\u554F\u3092\u62D2\u5426\u3057\u307E\u3057\u305F\u3002",
|
|
1483
|
+
"cursor.mcpAnswersHeader": "\u30E6\u30FC\u30B6\u30FC\uFF08\u30B9\u30DE\u30DB\uFF09\u306E\u56DE\u7B54:",
|
|
1484
|
+
"cursor.mcpAccepted": "\u30E6\u30FC\u30B6\u30FC\u306F\u30D7\u30E9\u30F3\u3092\u627F\u8A8D\u3057\u307E\u3057\u305F\u3002",
|
|
1485
|
+
"cursor.mcpDenied": "\u30E6\u30FC\u30B6\u30FC\u306F\u30D7\u30E9\u30F3\u3092\u62D2\u5426\u3057\u307E\u3057\u305F\u3002",
|
|
1486
|
+
"cursor.mcpPlanUnanswered": "\u30E6\u30FC\u30B6\u30FC\u306F\u30B9\u30DE\u30DB\u3067\u30D7\u30E9\u30F3\u306B\u5FDC\u7B54\u3057\u307E\u305B\u3093\u3067\u3057\u305F\uFF08\u30AA\u30D5\u30E9\u30A4\u30F3\u307E\u305F\u306F\u30BF\u30A4\u30E0\u30A2\u30A6\u30C8\uFF09\u3002",
|
|
1487
|
+
"cursor.mcpAskNoQuestions": "\u8CEA\u554F\u304C\u6307\u5B9A\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002",
|
|
1488
|
+
"cursor.mcpFailed": "tunnelbox ask \u304C\u5931\u6557\u3057\u307E\u3057\u305F",
|
|
1489
|
+
"adapter.errCursorExitCode": "Cursor CLI \u304C\u30B3\u30FC\u30C9 {code} \u3067\u7D42\u4E86\u3057\u307E\u3057\u305F",
|
|
1490
|
+
"adapter.errCursorExit": "Cursor CLI \u304C\u7D42\u4E86\u3057\u307E\u3057\u305F\uFF08{code}\uFF09: {err}",
|
|
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",
|
|
1492
|
+
"adapter.errCursorStart": "Cursor CLI \u306E\u8D77\u52D5\u306B\u5931\u6557\u3057\u307E\u3057\u305F: {message}",
|
|
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"
|
|
1260
1532
|
};
|
|
1261
1533
|
var ko_KR_default = {
|
|
1262
1534
|
"agent.err.createSession": "\uC138\uC158 \uC0DD\uC131 \uC2E4\uD328",
|
|
@@ -1533,7 +1805,75 @@ var ko_KR_default = {
|
|
|
1533
1805
|
"adapter.logQuestionNative": "\uC120\uD0DD \uC694\uCCAD -> \uD734\uB300\uD3F0 \uC120\uD0DD \uCE74\uB4DC questionID={id} (session={session})",
|
|
1534
1806
|
"adapter.logPermissionNative": "\uC2B9\uC778 \uC694\uCCAD -> \uD734\uB300\uD3F0 \uC2B9\uC778 \uCE74\uB4DC permissionID={id} (session={session})",
|
|
1535
1807
|
"adapter.checkAppServerOk": "codex app-server \uC0AC\uC6A9 \uAC00\uB2A5",
|
|
1536
|
-
"adapter.checkAppServerMissing": "\uC774 Codex CLI \uB294 `codex app-server` \uB97C \uC9C0\uC6D0\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4 (Codex CLI \uB97C \uC5C5\uADF8\uB808\uC774\uB4DC\uD558\uC138\uC694)"
|
|
1808
|
+
"adapter.checkAppServerMissing": "\uC774 Codex CLI \uB294 `codex app-server` \uB97C \uC9C0\uC6D0\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4 (Codex CLI \uB97C \uC5C5\uADF8\uB808\uC774\uB4DC\uD558\uC138\uC694)",
|
|
1809
|
+
"adapter.warnCursorCliMissing": 'Cursor CLI \uC2E4\uD589 \uD30C\uC77C "{bin}"\uC744(\uB97C) \uCC3E\uC744 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. \uC124\uCE58\uD558\uAC70\uB098(https://cursor.com/docs/cli) TUNNELBOX_CURSOR_BIN\uC5D0 \uACBD\uB85C\uB97C \uC9C0\uC815\uD558\uC138\uC694',
|
|
1810
|
+
"adapter.checkCursorCliMissing": "Cursor CLI \uC2E4\uD589 \uD30C\uC77C\uC744 \uCC3E\uC744 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4({bin}). https://cursor.com/docs/cli \uC5D0\uC11C \uC124\uCE58\uD558\uC138\uC694",
|
|
1811
|
+
"adapter.checkCursorAcpHint": "Cursor CLI\uB97C \uAC10\uC9C0\uD588\uC2B5\uB2C8\uB2E4. ACP \uBAA8\uB4DC(`agent acp`)\uB85C \uC2A4\uD2B8\uB9AC\uBC0D/\uC2B9\uC778/\uC120\uD0DD\uC744 \uC81C\uACF5\uD569\uB2C8\uB2E4",
|
|
1812
|
+
"adapter.errAcpSpawn": "cursor `agent acp` \uC2DC\uC791 \uC2E4\uD328: {message} (Cursor CLI\uAC00 `agent acp`\uB97C \uC9C0\uC6D0\uD558\uB294\uC9C0 \uD655\uC778\uD558\uC138\uC694)",
|
|
1813
|
+
"adapter.errAcpNoSession": "Cursor ACP\uAC00 \uC138\uC158 id\uB97C \uBC18\uD658\uD558\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4",
|
|
1814
|
+
"adapter.logResumeFailed": "\uC138\uC158 \uC7AC\uAC1C \uC2E4\uD328, \uC0C8 \uC138\uC158\uC744 \uC2DC\uC791\uD569\uB2C8\uB2E4: {message}",
|
|
1815
|
+
"adapter.logPlanNative": "\uACC4\uD68D \uC2B9\uC778 -> \uD734\uB300\uD3F0 \uC2B9\uC778 \uCE74\uB4DC permissionID={id} (session={session})",
|
|
1816
|
+
"adapter.errTimeout": "\uC2DC\uAC04 \uCD08\uACFC\uB85C \uC790\uB3D9 \uAC70\uBD80\uD588\uC2B5\uB2C8\uB2E4(fail-closed)",
|
|
1817
|
+
"adapter.planApprovalPrompt": "Cursor\uAC00 \uACC4\uD68D \uC2B9\uC778\uC744 \uC694\uCCAD\uD569\uB2C8\uB2E4",
|
|
1818
|
+
"adapter.checkCursorHeader": "tunnelbox-cursor \uD658\uACBD \uC810\uAC80",
|
|
1819
|
+
"adapter.errAskBridge": "ask \uBE0C\uB9AC\uC9C0 \uC2DC\uC791 \uC2E4\uD328: {message}",
|
|
1820
|
+
"adapter.logAskBridge": "MCP ask \uBE0C\uB9AC\uC9C0\uAC00 {url} \uC5D0\uC11C \uB300\uAE30 \uC911",
|
|
1821
|
+
"cursor.mcpAskDesc": "\uC0AC\uC6A9\uC790\uAC00 \uD734\uB300\uD3F0(tunnelbox)\uC5D0\uC11C \uC120\uD0DD\uD558\uB3C4\uB85D \uC694\uCCAD\uD558\uACE0 \uC751\uB2F5\uD560 \uB54C\uAE4C\uC9C0 \uCC28\uB2E8\uD569\uB2C8\uB2E4. \uACC4\uC18D\uD558\uAE30 \uC804\uC5D0 \uC0AC\uC6A9\uC790\uAC00 \uC635\uC158 \uC911 \uD558\uB098\uB97C \uACE8\uB77C\uC57C \uD560 \uB54C(\uC74C\uC2DD, \uBAA8\uB4DC, \uACC4\uD68D\uC548 \uC120\uD0DD \uB4F1) \uC0AC\uC6A9\uD558\uC138\uC694. \uC120\uD0DD\uD55C \uC635\uC158 \uB77C\uBCA8\uC744 \uBC18\uD658\uD569\uB2C8\uB2E4.",
|
|
1822
|
+
"cursor.mcpAskTitleDesc": "\uD734\uB300\uD3F0 \uCE74\uB4DC\uC5D0 \uD45C\uC2DC\uD560 \uC81C\uBAA9(\uC120\uD0DD)",
|
|
1823
|
+
"cursor.mcpAskQuestionsDesc": "\uD558\uB098 \uC774\uC0C1\uC758 \uC9C8\uBB38. \uAC01 \uC9C8\uBB38\uC5D0\uB294 \uC120\uD0DD\uC9C0\uAC00 \uC788\uC2B5\uB2C8\uB2E4",
|
|
1824
|
+
"cursor.mcpPlanDesc": "\uC0AC\uC6A9\uC790\uAC00 \uD734\uB300\uD3F0(tunnelbox)\uC5D0\uC11C \uACC4\uD68D\uC744 \uC2B9\uC778\uD558\uB3C4\uB85D \uC694\uCCAD\uD558\uACE0 \uC751\uB2F5\uD560 \uB54C\uAE4C\uC9C0 \uCC28\uB2E8\uD569\uB2C8\uB2E4. \uC2B9\uC778 \uC5EC\uBD80\uB97C \uBC18\uD658\uD569\uB2C8\uB2E4.",
|
|
1825
|
+
"cursor.mcpNoBridge": "tunnelbox ask \uBE0C\uB9AC\uC9C0\uB97C \uC0AC\uC6A9\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4",
|
|
1826
|
+
"cursor.mcpUnanswered": "\uC0AC\uC6A9\uC790\uAC00 \uD734\uB300\uD3F0\uC5D0\uC11C \uC751\uB2F5\uD558\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4(\uC624\uD504\uB77C\uC778 \uB610\uB294 \uC2DC\uAC04 \uCD08\uACFC). \uACC4\uC18D \uC9C4\uD589\uD558\uAC70\uB098 \uB300\uD654\uB85C \uBB3C\uC5B4\uBCF4\uC138\uC694.",
|
|
1827
|
+
"cursor.mcpRejected": "\uC0AC\uC6A9\uC790\uAC00 \uD734\uB300\uD3F0\uC5D0\uC11C \uC9C8\uBB38\uC744 \uAC70\uBD80\uD588\uC2B5\uB2C8\uB2E4.",
|
|
1828
|
+
"cursor.mcpAnswersHeader": "\uC0AC\uC6A9\uC790(\uD734\uB300\uD3F0)\uC758 \uC751\uB2F5:",
|
|
1829
|
+
"cursor.mcpAccepted": "\uC0AC\uC6A9\uC790\uAC00 \uACC4\uD68D\uC744 \uC2B9\uC778\uD588\uC2B5\uB2C8\uB2E4.",
|
|
1830
|
+
"cursor.mcpDenied": "\uC0AC\uC6A9\uC790\uAC00 \uACC4\uD68D\uC744 \uAC70\uBD80\uD588\uC2B5\uB2C8\uB2E4.",
|
|
1831
|
+
"cursor.mcpPlanUnanswered": "\uC0AC\uC6A9\uC790\uAC00 \uD734\uB300\uD3F0\uC5D0\uC11C \uACC4\uD68D\uC5D0 \uC751\uB2F5\uD558\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4(\uC624\uD504\uB77C\uC778 \uB610\uB294 \uC2DC\uAC04 \uCD08\uACFC).",
|
|
1832
|
+
"cursor.mcpAskNoQuestions": "\uC9C8\uBB38\uC774 \uC81C\uACF5\uB418\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4.",
|
|
1833
|
+
"cursor.mcpFailed": "tunnelbox ask \uC2E4\uD328",
|
|
1834
|
+
"adapter.errCursorExitCode": "Cursor CLI\uAC00 \uCF54\uB4DC {code}(\uC73C)\uB85C \uC885\uB8CC\uB418\uC5C8\uC2B5\uB2C8\uB2E4",
|
|
1835
|
+
"adapter.errCursorExit": "Cursor CLI \uC885\uB8CC({code}): {err}",
|
|
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})",
|
|
1837
|
+
"adapter.errCursorStart": "Cursor CLI \uC2DC\uC791 \uC2E4\uD328: {message}",
|
|
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."
|
|
1537
1877
|
};
|
|
1538
1878
|
var fr_FR_default = {
|
|
1539
1879
|
"agent.err.createSession": "\xC9chec de la cr\xE9ation de la session",
|
|
@@ -1810,7 +2150,75 @@ var fr_FR_default = {
|
|
|
1810
2150
|
"adapter.logQuestionNative": "demande de choix -> carte de choix du t\xE9l\xE9phone questionID={id} (session={session})",
|
|
1811
2151
|
"adapter.logPermissionNative": "demande d'approbation -> carte d'approbation du t\xE9l\xE9phone permissionID={id} (session={session})",
|
|
1812
2152
|
"adapter.checkAppServerOk": "codex app-server disponible",
|
|
1813
|
-
"adapter.checkAppServerMissing": "ce Codex CLI ne prend pas en charge `codex app-server` (veuillez mettre \xE0 jour Codex CLI)"
|
|
2153
|
+
"adapter.checkAppServerMissing": "ce Codex CLI ne prend pas en charge `codex app-server` (veuillez mettre \xE0 jour Codex CLI)",
|
|
2154
|
+
"adapter.warnCursorCliMissing": "Ex\xE9cutable Cursor CLI \xAB {bin} \xBB introuvable ; installez-le (https://cursor.com/docs/cli) ou d\xE9finissez TUNNELBOX_CURSOR_BIN",
|
|
2155
|
+
"adapter.checkCursorCliMissing": "Ex\xE9cutable Cursor CLI introuvable ({bin}) ; installez-le depuis https://cursor.com/docs/cli",
|
|
2156
|
+
"adapter.checkCursorAcpHint": "Cursor CLI d\xE9tect\xE9 ; le mode ACP (`agent acp`) sera utilis\xE9 pour le streaming/l'approbation/la s\xE9lection",
|
|
2157
|
+
"adapter.errAcpSpawn": "\xC9chec du d\xE9marrage de cursor `agent acp` : {message} (v\xE9rifiez que votre Cursor CLI prend en charge `agent acp`)",
|
|
2158
|
+
"adapter.errAcpNoSession": "Cursor ACP n'a pas renvoy\xE9 d'id de session",
|
|
2159
|
+
"adapter.logResumeFailed": "\xC9chec de la reprise de session, d\xE9marrage d'une nouvelle session : {message}",
|
|
2160
|
+
"adapter.logPlanNative": "approbation de plan -> carte d'approbation du t\xE9l\xE9phone permissionID={id} (session={session})",
|
|
2161
|
+
"adapter.errTimeout": "D\xE9lai d\xE9pass\xE9, rejet automatique (fail-closed)",
|
|
2162
|
+
"adapter.planApprovalPrompt": "Cursor demande l'approbation d'un plan",
|
|
2163
|
+
"adapter.checkCursorHeader": "v\xE9rification de l'environnement tunnelbox-cursor",
|
|
2164
|
+
"adapter.errAskBridge": "\xC9chec du d\xE9marrage du pont ask : {message}",
|
|
2165
|
+
"adapter.logAskBridge": "Pont MCP ask \xE0 l'\xE9coute sur {url}",
|
|
2166
|
+
"cursor.mcpAskDesc": "Demande \xE0 l'utilisateur de choisir sur son t\xE9l\xE9phone (tunnelbox) et bloque jusqu'\xE0 sa r\xE9ponse. \xC0 utiliser chaque fois que l'utilisateur doit choisir entre des options avant de continuer (plat, mode, option de plan\u2026). Renvoie le(s) libell\xE9(s) choisi(s).",
|
|
2167
|
+
"cursor.mcpAskTitleDesc": "Titre facultatif affich\xE9 sur la carte du t\xE9l\xE9phone",
|
|
2168
|
+
"cursor.mcpAskQuestionsDesc": "Une ou plusieurs questions ; chacune propose des options",
|
|
2169
|
+
"cursor.mcpPlanDesc": "Demande \xE0 l'utilisateur d'approuver un plan sur son t\xE9l\xE9phone (tunnelbox) et bloque jusqu'\xE0 sa r\xE9ponse. Indique si le plan a \xE9t\xE9 accept\xE9.",
|
|
2170
|
+
"cursor.mcpNoBridge": "le pont ask tunnelbox n'est pas disponible",
|
|
2171
|
+
"cursor.mcpUnanswered": "L'utilisateur n'a pas r\xE9pondu sur son t\xE9l\xE9phone (hors ligne ou d\xE9lai d\xE9pass\xE9). Continuez ou posez la question en conversation.",
|
|
2172
|
+
"cursor.mcpRejected": "L'utilisateur a rejet\xE9 la question sur son t\xE9l\xE9phone.",
|
|
2173
|
+
"cursor.mcpAnswersHeader": "R\xE9ponses de l'utilisateur (depuis son t\xE9l\xE9phone) :",
|
|
2174
|
+
"cursor.mcpAccepted": "L'utilisateur a accept\xE9 le plan.",
|
|
2175
|
+
"cursor.mcpDenied": "L'utilisateur a rejet\xE9 le plan.",
|
|
2176
|
+
"cursor.mcpPlanUnanswered": "L'utilisateur n'a pas r\xE9pondu au plan sur son t\xE9l\xE9phone (hors ligne ou d\xE9lai d\xE9pass\xE9).",
|
|
2177
|
+
"cursor.mcpAskNoQuestions": "Aucune question fournie.",
|
|
2178
|
+
"cursor.mcpFailed": "\xE9chec de tunnelbox ask",
|
|
2179
|
+
"adapter.errCursorExitCode": "Cursor CLI s'est arr\xEAt\xE9 avec le code {code}",
|
|
2180
|
+
"adapter.errCursorExit": "Cursor CLI arr\xEAt\xE9 ({code}) : {err}",
|
|
2181
|
+
"adapter.errCursorSpawn": "Impossible de d\xE9marrer Cursor CLI (agent) : v\xE9rifiez qu'il est install\xE9 et connect\xE9 ({message})",
|
|
2182
|
+
"adapter.errCursorStart": "\xC9chec du d\xE9marrage de Cursor CLI : {message}",
|
|
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."
|
|
1814
2222
|
};
|
|
1815
2223
|
var de_DE_default = {
|
|
1816
2224
|
"agent.err.createSession": "Sitzung konnte nicht erstellt werden",
|
|
@@ -2087,7 +2495,75 @@ var de_DE_default = {
|
|
|
2087
2495
|
"adapter.logQuestionNative": "Auswahlanfrage -> Auswahlkarte am Handy questionID={id} (session={session})",
|
|
2088
2496
|
"adapter.logPermissionNative": "Genehmigungsanfrage -> Genehmigungskarte am Handy permissionID={id} (session={session})",
|
|
2089
2497
|
"adapter.checkAppServerOk": "codex app-server verf\xFCgbar",
|
|
2090
|
-
"adapter.checkAppServerMissing": "diese Codex CLI unterst\xFCtzt `codex app-server` nicht (bitte Codex CLI aktualisieren)"
|
|
2498
|
+
"adapter.checkAppServerMissing": "diese Codex CLI unterst\xFCtzt `codex app-server` nicht (bitte Codex CLI aktualisieren)",
|
|
2499
|
+
"adapter.warnCursorCliMissing": 'Cursor-CLI-Programm "{bin}" nicht gefunden; installieren Sie es (https://cursor.com/docs/cli) oder setzen Sie TUNNELBOX_CURSOR_BIN',
|
|
2500
|
+
"adapter.checkCursorCliMissing": "Cursor-CLI-Programm nicht gefunden ({bin}); installieren Sie es von https://cursor.com/docs/cli",
|
|
2501
|
+
"adapter.checkCursorAcpHint": "Cursor CLI erkannt; der ACP-Modus (`agent acp`) wird f\xFCr Streaming/Genehmigung/Auswahl verwendet",
|
|
2502
|
+
"adapter.errAcpSpawn": "Start von cursor `agent acp` fehlgeschlagen: {message} (stellen Sie sicher, dass Ihre Cursor CLI `agent acp` unterst\xFCtzt)",
|
|
2503
|
+
"adapter.errAcpNoSession": "Cursor ACP hat keine Sitzungs-ID zur\xFCckgegeben",
|
|
2504
|
+
"adapter.logResumeFailed": "Sitzungswiederaufnahme fehlgeschlagen, neue Sitzung wird gestartet: {message}",
|
|
2505
|
+
"adapter.logPlanNative": "Plan-Genehmigung -> Genehmigungskarte am Handy permissionID={id} (session={session})",
|
|
2506
|
+
"adapter.errTimeout": "Zeit\xFCberschreitung, automatisch abgelehnt (fail-closed)",
|
|
2507
|
+
"adapter.planApprovalPrompt": "Cursor fordert die Genehmigung eines Plans an",
|
|
2508
|
+
"adapter.checkCursorHeader": "tunnelbox-cursor Umgebungspr\xFCfung",
|
|
2509
|
+
"adapter.errAskBridge": "Start der ask-Bridge fehlgeschlagen: {message}",
|
|
2510
|
+
"adapter.logAskBridge": "MCP ask-Bridge lauscht auf {url}",
|
|
2511
|
+
"cursor.mcpAskDesc": "Fordert den Nutzer auf, auf dem Handy (tunnelbox) zu w\xE4hlen, und blockiert bis zur Antwort. Verwende dies, wann immer der Nutzer vor dem Fortfahren zwischen Optionen w\xE4hlen muss (Gericht, Modus, Planoption \u2026). Gibt die gew\xE4hlten Optionsbezeichnungen zur\xFCck.",
|
|
2512
|
+
"cursor.mcpAskTitleDesc": "Optionaler Titel auf der Handy-Karte",
|
|
2513
|
+
"cursor.mcpAskQuestionsDesc": "Eine oder mehrere Fragen; jede bietet Optionen",
|
|
2514
|
+
"cursor.mcpPlanDesc": "Fordert den Nutzer auf, einen Plan auf dem Handy (tunnelbox) zu genehmigen, und blockiert bis zur Antwort. Gibt zur\xFCck, ob der Plan akzeptiert wurde.",
|
|
2515
|
+
"cursor.mcpNoBridge": "die tunnelbox ask-Bridge ist nicht verf\xFCgbar",
|
|
2516
|
+
"cursor.mcpUnanswered": "Der Nutzer hat auf dem Handy nicht geantwortet (offline oder Zeit\xFCberschreitung). Fahre fort oder frage im Chat.",
|
|
2517
|
+
"cursor.mcpRejected": "Der Nutzer hat die Frage auf dem Handy abgelehnt.",
|
|
2518
|
+
"cursor.mcpAnswersHeader": "Antworten des Nutzers (vom Handy):",
|
|
2519
|
+
"cursor.mcpAccepted": "Der Nutzer hat den Plan akzeptiert.",
|
|
2520
|
+
"cursor.mcpDenied": "Der Nutzer hat den Plan abgelehnt.",
|
|
2521
|
+
"cursor.mcpPlanUnanswered": "Der Nutzer hat auf dem Handy nicht auf den Plan geantwortet (offline oder Zeit\xFCberschreitung).",
|
|
2522
|
+
"cursor.mcpAskNoQuestions": "Keine Fragen angegeben.",
|
|
2523
|
+
"cursor.mcpFailed": "tunnelbox ask fehlgeschlagen",
|
|
2524
|
+
"adapter.errCursorExitCode": "Cursor CLI beendet mit Code {code}",
|
|
2525
|
+
"adapter.errCursorExit": "Cursor CLI beendet ({code}): {err}",
|
|
2526
|
+
"adapter.errCursorSpawn": "Cursor CLI (agent) kann nicht gestartet werden: Stellen Sie sicher, dass es installiert und angemeldet ist ({message})",
|
|
2527
|
+
"adapter.errCursorStart": "Start von Cursor CLI fehlgeschlagen: {message}",
|
|
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."
|
|
2091
2567
|
};
|
|
2092
2568
|
var es_ES_default = {
|
|
2093
2569
|
"agent.err.createSession": "No se pudo crear la sesi\xF3n",
|
|
@@ -2364,7 +2840,75 @@ var es_ES_default = {
|
|
|
2364
2840
|
"adapter.logQuestionNative": "solicitud de elecci\xF3n -> tarjeta de elecci\xF3n del tel\xE9fono questionID={id} (session={session})",
|
|
2365
2841
|
"adapter.logPermissionNative": "solicitud de aprobaci\xF3n -> tarjeta de aprobaci\xF3n del tel\xE9fono permissionID={id} (session={session})",
|
|
2366
2842
|
"adapter.checkAppServerOk": "codex app-server disponible",
|
|
2367
|
-
"adapter.checkAppServerMissing": "este Codex CLI no admite `codex app-server` (actualiza Codex CLI)"
|
|
2843
|
+
"adapter.checkAppServerMissing": "este Codex CLI no admite `codex app-server` (actualiza Codex CLI)",
|
|
2844
|
+
"adapter.warnCursorCliMissing": 'No se encontr\xF3 el ejecutable de Cursor CLI "{bin}"; inst\xE1lalo (https://cursor.com/docs/cli) o define TUNNELBOX_CURSOR_BIN',
|
|
2845
|
+
"adapter.checkCursorCliMissing": "No se encontr\xF3 el ejecutable de Cursor CLI ({bin}); inst\xE1lalo desde https://cursor.com/docs/cli",
|
|
2846
|
+
"adapter.checkCursorAcpHint": "Cursor CLI detectado; se usar\xE1 el modo ACP (`agent acp`) para streaming/aprobaci\xF3n/selecci\xF3n",
|
|
2847
|
+
"adapter.errAcpSpawn": "No se pudo iniciar cursor `agent acp`: {message} (comprueba que tu Cursor CLI admita `agent acp`)",
|
|
2848
|
+
"adapter.errAcpNoSession": "Cursor ACP no devolvi\xF3 un id de sesi\xF3n",
|
|
2849
|
+
"adapter.logResumeFailed": "Fall\xF3 la reanudaci\xF3n de la sesi\xF3n; se inicia una nueva sesi\xF3n: {message}",
|
|
2850
|
+
"adapter.logPlanNative": "aprobaci\xF3n de plan -> tarjeta de aprobaci\xF3n del tel\xE9fono permissionID={id} (session={session})",
|
|
2851
|
+
"adapter.errTimeout": "Tiempo de espera agotado, rechazo autom\xE1tico (fail-closed)",
|
|
2852
|
+
"adapter.planApprovalPrompt": "Cursor solicita aprobaci\xF3n de un plan",
|
|
2853
|
+
"adapter.checkCursorHeader": "comprobaci\xF3n de entorno de tunnelbox-cursor",
|
|
2854
|
+
"adapter.errAskBridge": "No se pudo iniciar el puente ask: {message}",
|
|
2855
|
+
"adapter.logAskBridge": "Puente MCP ask escuchando en {url}",
|
|
2856
|
+
"cursor.mcpAskDesc": "Pide al usuario que elija en su tel\xE9fono (tunnelbox) y bloquea hasta que responda. \xDAsalo siempre que el usuario deba elegir entre opciones antes de continuar (plato, modo, opci\xF3n de plan\u2026). Devuelve la(s) etiqueta(s) elegida(s).",
|
|
2857
|
+
"cursor.mcpAskTitleDesc": "T\xEDtulo opcional mostrado en la tarjeta del tel\xE9fono",
|
|
2858
|
+
"cursor.mcpAskQuestionsDesc": "Una o m\xE1s preguntas; cada una tiene opciones",
|
|
2859
|
+
"cursor.mcpPlanDesc": "Pide al usuario que apruebe un plan en su tel\xE9fono (tunnelbox) y bloquea hasta que responda. Indica si el plan fue aceptado.",
|
|
2860
|
+
"cursor.mcpNoBridge": "el puente ask de tunnelbox no est\xE1 disponible",
|
|
2861
|
+
"cursor.mcpUnanswered": "El usuario no respondi\xF3 en su tel\xE9fono (sin conexi\xF3n o tiempo agotado). Contin\xFAa o pregunta en el chat.",
|
|
2862
|
+
"cursor.mcpRejected": "El usuario rechaz\xF3 la pregunta en su tel\xE9fono.",
|
|
2863
|
+
"cursor.mcpAnswersHeader": "Respuestas del usuario (desde su tel\xE9fono):",
|
|
2864
|
+
"cursor.mcpAccepted": "El usuario acept\xF3 el plan.",
|
|
2865
|
+
"cursor.mcpDenied": "El usuario rechaz\xF3 el plan.",
|
|
2866
|
+
"cursor.mcpPlanUnanswered": "El usuario no respondi\xF3 al plan en su tel\xE9fono (sin conexi\xF3n o tiempo agotado).",
|
|
2867
|
+
"cursor.mcpAskNoQuestions": "No se proporcionaron preguntas.",
|
|
2868
|
+
"cursor.mcpFailed": "fall\xF3 tunnelbox ask",
|
|
2869
|
+
"adapter.errCursorExitCode": "Cursor CLI finaliz\xF3 con el c\xF3digo {code}",
|
|
2870
|
+
"adapter.errCursorExit": "Cursor CLI finaliz\xF3 ({code}): {err}",
|
|
2871
|
+
"adapter.errCursorSpawn": "No se puede iniciar Cursor CLI (agent): comprueba que est\xE9 instalado y con sesi\xF3n iniciada ({message})",
|
|
2872
|
+
"adapter.errCursorStart": "Fall\xF3 el inicio de Cursor CLI: {message}",
|
|
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."
|
|
2368
2912
|
};
|
|
2369
2913
|
var DEFAULT_LANG = "en-US";
|
|
2370
2914
|
var dicts = {
|
|
@@ -2401,6 +2945,11 @@ function detectSystemLang() {
|
|
|
2401
2945
|
const v = process.env[k];
|
|
2402
2946
|
if (v && v.trim()) return v.trim().split(".")[0];
|
|
2403
2947
|
}
|
|
2948
|
+
try {
|
|
2949
|
+
const loc = Intl.DateTimeFormat().resolvedOptions().locale;
|
|
2950
|
+
if (loc && loc.trim()) return loc.trim();
|
|
2951
|
+
} catch {
|
|
2952
|
+
}
|
|
2404
2953
|
return null;
|
|
2405
2954
|
}
|
|
2406
2955
|
function resolveLang(opts = {}) {
|
|
@@ -2489,6 +3038,35 @@ function writePairingJson(info, type) {
|
|
|
2489
3038
|
function injectedRelayUrl() {
|
|
2490
3039
|
return "wss://relay.tunnelbox.top" ? "wss://relay.tunnelbox.top".replace(/\/+$/, "") : "";
|
|
2491
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
|
+
}
|
|
2492
3070
|
function dispWidth(s) {
|
|
2493
3071
|
let w = 0;
|
|
2494
3072
|
for (const ch of s) w += ch.charCodeAt(0) > 255 ? 2 : 1;
|
|
@@ -2521,6 +3099,7 @@ async function printPairing(code, type, name2, lang) {
|
|
|
2521
3099
|
console.log("\u2502 " + padVisual(codeLine, W - 2) + " \u2502");
|
|
2522
3100
|
console.log("\u2514" + bar + "\u2518");
|
|
2523
3101
|
console.log(" " + hint);
|
|
3102
|
+
console.log(" " + tt("qr.downloadApp", { url: hyperlink(websiteUrl()) }));
|
|
2524
3103
|
console.log(" " + tt("qr.validFor"));
|
|
2525
3104
|
try {
|
|
2526
3105
|
const mod = await import("qrcode");
|
|
@@ -2808,7 +3387,7 @@ function sessionTitle(messages) {
|
|
|
2808
3387
|
}
|
|
2809
3388
|
return "";
|
|
2810
3389
|
}
|
|
2811
|
-
function streamEventTo(sessionID, event, emit, streamed) {
|
|
3390
|
+
function streamEventTo(sessionID, event, emit, streamed, t2) {
|
|
2812
3391
|
const e = event ?? {};
|
|
2813
3392
|
if (typeof e.type !== "string" || !e.data || typeof e.data !== "object") return;
|
|
2814
3393
|
const data = e.data;
|
|
@@ -2818,21 +3397,21 @@ function streamEventTo(sessionID, event, emit, streamed) {
|
|
|
2818
3397
|
switch (e.type) {
|
|
2819
3398
|
case "assistant/chunk": {
|
|
2820
3399
|
const chunk = data.chunk ?? {};
|
|
2821
|
-
const
|
|
2822
|
-
if (
|
|
3400
|
+
const ct = chunk.type || "";
|
|
3401
|
+
if (ct === "finish") {
|
|
2823
3402
|
if (chunk.reason?.kind === "error") {
|
|
2824
3403
|
streamed.add(key);
|
|
2825
|
-
const msg = chunk.reason.failure?.message || chunk.reason.error?.message || "
|
|
3404
|
+
const msg = chunk.reason.failure?.message || chunk.reason.error?.message || t2("adapter.errDshGenerate");
|
|
2826
3405
|
emit(sessionID, mid, { id: "err", type: "text", text: "[dsh] " + msg, complete: true });
|
|
2827
3406
|
}
|
|
2828
3407
|
return;
|
|
2829
3408
|
}
|
|
2830
|
-
if (
|
|
3409
|
+
if (ct === "text-delta" && typeof chunk.text === "string") {
|
|
2831
3410
|
streamed.add(key);
|
|
2832
3411
|
emit(sessionID, mid, { id: `t${chunk.index ?? 0}`, type: "text", delta: chunk.text });
|
|
2833
3412
|
return;
|
|
2834
3413
|
}
|
|
2835
|
-
if (
|
|
3414
|
+
if (ct === "reasoning-delta" && typeof chunk.text === "string") {
|
|
2836
3415
|
streamed.add(key);
|
|
2837
3416
|
emit(sessionID, mid, { id: `r${chunk.index ?? 0}`, type: "thinking", delta: chunk.text });
|
|
2838
3417
|
return;
|
|
@@ -2924,7 +3503,7 @@ async function sessionExists(sp, sessionId) {
|
|
|
2924
3503
|
const headers = await sp.list().catch(() => []);
|
|
2925
3504
|
return headers.some((h) => h.id === sessionId);
|
|
2926
3505
|
}
|
|
2927
|
-
async function sessionInfo(sp, h) {
|
|
3506
|
+
async function sessionInfo(sp, h, t2) {
|
|
2928
3507
|
let events = [];
|
|
2929
3508
|
let updated = h.createdAt;
|
|
2930
3509
|
try {
|
|
@@ -2935,19 +3514,19 @@ async function sessionInfo(sp, h) {
|
|
|
2935
3514
|
}
|
|
2936
3515
|
return {
|
|
2937
3516
|
id: h.id,
|
|
2938
|
-
title: titleOf(events) || "
|
|
3517
|
+
title: titleOf(events) || t2("adapter.newSessionTitle"),
|
|
2939
3518
|
created: h.createdAt,
|
|
2940
3519
|
updated,
|
|
2941
3520
|
status: "idle",
|
|
2942
3521
|
workspace: h.cwd
|
|
2943
3522
|
};
|
|
2944
3523
|
}
|
|
2945
|
-
async function listSessions(sp, workspace) {
|
|
3524
|
+
async function listSessions(sp, workspace, t2) {
|
|
2946
3525
|
const headers = await sp.list().catch(() => []);
|
|
2947
3526
|
const out = [];
|
|
2948
3527
|
for (const h of headers) {
|
|
2949
3528
|
if (workspace && h.cwd !== workspace) continue;
|
|
2950
|
-
const s = await sessionInfo(sp, h);
|
|
3529
|
+
const s = await sessionInfo(sp, h, t2);
|
|
2951
3530
|
if (s) out.push(s);
|
|
2952
3531
|
}
|
|
2953
3532
|
return out.sort((a, b) => b.updated - a.updated);
|
|
@@ -3005,7 +3584,7 @@ function findDir(dir, name2) {
|
|
|
3005
3584
|
}
|
|
3006
3585
|
|
|
3007
3586
|
// src/bridge.ts
|
|
3008
|
-
var VERSION = true ? "0.1.
|
|
3587
|
+
var VERSION = true ? "0.1.22" : "0.0.0-dev";
|
|
3009
3588
|
var AGENT_TYPE = "dsh";
|
|
3010
3589
|
var APPROVAL_TIMEOUT_MS = 12e4;
|
|
3011
3590
|
var ADAPTER_COMMANDS = [
|
|
@@ -3205,7 +3784,7 @@ ${err.stack}` : ""));
|
|
|
3205
3784
|
const payload = env.payload;
|
|
3206
3785
|
const sessions = /* @__PURE__ */ new Map();
|
|
3207
3786
|
if (sp) {
|
|
3208
|
-
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);
|
|
3209
3788
|
}
|
|
3210
3789
|
for (const [id, h] of this.handles) {
|
|
3211
3790
|
const events = [...liveSessionEvents(h.agent.session)];
|
|
@@ -3487,7 +4066,7 @@ ${err.stack}` : ""));
|
|
|
3487
4066
|
if (!gw || !this.remoteClientId) return;
|
|
3488
4067
|
void gw.dispatchRpc("$events/result", { args: { clientId: this.remoteClientId, eventId, outcome } }).then(
|
|
3489
4068
|
(res) => {
|
|
3490
|
-
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") }));
|
|
3491
4070
|
},
|
|
3492
4071
|
(e) => this.log(this.t("adapter.logResultBackfillFailed", { eventId, message: e.message }))
|
|
3493
4072
|
);
|
|
@@ -3774,7 +4353,7 @@ ${err.stack}` : ""));
|
|
|
3774
4353
|
onSessionEvent(sessionID, event) {
|
|
3775
4354
|
const sid = String(sessionID);
|
|
3776
4355
|
if (!this.handles.has(sid)) return;
|
|
3777
|
-
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);
|
|
3778
4357
|
const t2 = event.type;
|
|
3779
4358
|
if (t2 === "turn/start") this.send(envelope("session.status", { sessionID: sid, status: "running" }));
|
|
3780
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"
|