agent-embassy 1.7.1 → 1.8.0

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.
Files changed (121) hide show
  1. package/CHANGELOG.md +19 -0
  2. package/CONTRIBUTING.md +51 -47
  3. package/README.md +26 -9
  4. package/README.zh-CN.md +22 -9
  5. package/SECURITY.md +48 -35
  6. package/dist/src/gateway/acp-client.d.ts +12 -19
  7. package/dist/src/gateway/acp-client.js +90 -65
  8. package/dist/src/gateway/acp-client.js.map +1 -1
  9. package/dist/src/gateway/acp-provider.d.ts +11 -10
  10. package/dist/src/gateway/acp-provider.js +165 -53
  11. package/dist/src/gateway/acp-provider.js.map +1 -1
  12. package/dist/src/gateway/claude-helper-client.d.ts +2 -43
  13. package/dist/src/gateway/claude-helper-client.js +1 -211
  14. package/dist/src/gateway/claude-helper-client.js.map +1 -1
  15. package/dist/src/gateway/claude-helper-protocol.d.ts +16 -74
  16. package/dist/src/gateway/claude-helper-protocol.js +99 -378
  17. package/dist/src/gateway/claude-helper-protocol.js.map +1 -1
  18. package/dist/src/gateway/claude-helper-supervisor.d.ts +56 -44
  19. package/dist/src/gateway/claude-helper-supervisor.js +265 -456
  20. package/dist/src/gateway/claude-helper-supervisor.js.map +1 -1
  21. package/dist/src/gateway/claude-helper.js +184 -210
  22. package/dist/src/gateway/claude-helper.js.map +1 -1
  23. package/dist/src/gateway/claude-peer.d.ts +20 -87
  24. package/dist/src/gateway/claude-peer.js +310 -1009
  25. package/dist/src/gateway/claude-peer.js.map +1 -1
  26. package/dist/src/gateway/claude-runtime.d.ts +13 -15
  27. package/dist/src/gateway/claude-runtime.js +14 -168
  28. package/dist/src/gateway/claude-runtime.js.map +1 -1
  29. package/dist/src/gateway/cli-copy.d.ts +1 -1
  30. package/dist/src/gateway/cli-copy.en.d.ts +2 -4
  31. package/dist/src/gateway/cli-copy.en.js +3 -4
  32. package/dist/src/gateway/cli-copy.en.js.map +1 -1
  33. package/dist/src/gateway/cli-copy.js +0 -2
  34. package/dist/src/gateway/cli-copy.js.map +1 -1
  35. package/dist/src/gateway/cli-copy.zh-CN.d.ts +2 -4
  36. package/dist/src/gateway/cli-copy.zh-CN.js +3 -4
  37. package/dist/src/gateway/cli-copy.zh-CN.js.map +1 -1
  38. package/dist/src/gateway/cli.d.ts +7 -2
  39. package/dist/src/gateway/cli.js +273 -617
  40. package/dist/src/gateway/cli.js.map +1 -1
  41. package/dist/src/gateway/codex-app-server.d.ts +5 -227
  42. package/dist/src/gateway/codex-app-server.js +18 -1463
  43. package/dist/src/gateway/codex-app-server.js.map +1 -1
  44. package/dist/src/gateway/codex-doctor.d.ts +6 -3
  45. package/dist/src/gateway/codex-doctor.js +77 -98
  46. package/dist/src/gateway/codex-doctor.js.map +1 -1
  47. package/dist/src/gateway/codex-local-transport.d.ts +1 -6
  48. package/dist/src/gateway/codex-local-transport.js +8 -10
  49. package/dist/src/gateway/codex-local-transport.js.map +1 -1
  50. package/dist/src/gateway/codex-stateless-transport.d.ts +114 -0
  51. package/dist/src/gateway/codex-stateless-transport.js +1108 -0
  52. package/dist/src/gateway/codex-stateless-transport.js.map +1 -0
  53. package/dist/src/gateway/config.d.ts +2 -9
  54. package/dist/src/gateway/config.js +62 -100
  55. package/dist/src/gateway/config.js.map +1 -1
  56. package/dist/src/gateway/control.d.ts +36 -90
  57. package/dist/src/gateway/control.js +464 -1159
  58. package/dist/src/gateway/control.js.map +1 -1
  59. package/dist/src/gateway/dashboard-copy.d.ts +1 -1
  60. package/dist/src/gateway/dashboard-copy.en.d.ts +3 -26
  61. package/dist/src/gateway/dashboard-copy.en.js +14 -37
  62. package/dist/src/gateway/dashboard-copy.en.js.map +1 -1
  63. package/dist/src/gateway/dashboard-copy.js +3 -26
  64. package/dist/src/gateway/dashboard-copy.js.map +1 -1
  65. package/dist/src/gateway/dashboard-copy.zh-CN.d.ts +3 -26
  66. package/dist/src/gateway/dashboard-copy.zh-CN.js +14 -37
  67. package/dist/src/gateway/dashboard-copy.zh-CN.js.map +1 -1
  68. package/dist/src/gateway/dashboard-model.d.ts +6 -23
  69. package/dist/src/gateway/dashboard-model.js +37 -131
  70. package/dist/src/gateway/dashboard-model.js.map +1 -1
  71. package/dist/src/gateway/dashboard.d.ts +0 -6
  72. package/dist/src/gateway/dashboard.js +0 -6
  73. package/dist/src/gateway/dashboard.js.map +1 -1
  74. package/dist/src/gateway/live-dashboard-app/app.js +9 -32
  75. package/dist/src/gateway/live-dashboard-command.js +2 -2
  76. package/dist/src/gateway/live-dashboard-command.js.map +1 -1
  77. package/dist/src/gateway/live-dashboard-http.d.ts +1 -1
  78. package/dist/src/gateway/live-dashboard-http.js +2 -2
  79. package/dist/src/gateway/live-dashboard-http.js.map +1 -1
  80. package/dist/src/gateway/progress-watch-machine.d.ts +1 -37
  81. package/dist/src/gateway/progress-watch-machine.js +4 -15
  82. package/dist/src/gateway/progress-watch-machine.js.map +1 -1
  83. package/dist/src/gateway/providers.d.ts +55 -195
  84. package/dist/src/gateway/providers.js +608 -2465
  85. package/dist/src/gateway/providers.js.map +1 -1
  86. package/dist/src/gateway/server.d.ts +16 -25
  87. package/dist/src/gateway/server.js +164 -251
  88. package/dist/src/gateway/server.js.map +1 -1
  89. package/dist/src/gateway/service.d.ts +146 -448
  90. package/dist/src/gateway/service.js +1670 -6142
  91. package/dist/src/gateway/service.js.map +1 -1
  92. package/dist/src/gateway/state-v2-to-v3.d.ts +23 -0
  93. package/dist/src/gateway/state-v2-to-v3.js +994 -0
  94. package/dist/src/gateway/state-v2-to-v3.js.map +1 -0
  95. package/dist/src/gateway/store.d.ts +54 -309
  96. package/dist/src/gateway/store.js +1560 -3524
  97. package/dist/src/gateway/store.js.map +1 -1
  98. package/dist/src/gateway/types.d.ts +175 -228
  99. package/dist/src/gateway/types.js +114 -252
  100. package/dist/src/gateway/types.js.map +1 -1
  101. package/docs/CONFIGURATION.md +22 -9
  102. package/docs/CONFIGURATION.zh-CN.md +21 -9
  103. package/docs/DASHBOARD.md +10 -10
  104. package/docs/DASHBOARD.zh-CN.md +3 -3
  105. package/docs/DELIVERY.md +4 -4
  106. package/docs/DELIVERY.zh-CN.md +4 -4
  107. package/docs/GATEWAY-ARCHITECTURE.md +158 -187
  108. package/package.json +1 -1
  109. package/skills/embassy-peer/SKILL.md +28 -22
  110. package/dist/src/gateway/codex-registration-generation.d.ts +0 -5
  111. package/dist/src/gateway/codex-registration-generation.js +0 -19
  112. package/dist/src/gateway/codex-registration-generation.js.map +0 -1
  113. package/dist/src/gateway/codex-registration-succession.d.ts +0 -209
  114. package/dist/src/gateway/codex-registration-succession.js +0 -588
  115. package/dist/src/gateway/codex-registration-succession.js.map +0 -1
  116. package/dist/src/gateway/compatibility.d.ts +0 -22
  117. package/dist/src/gateway/compatibility.js +0 -23
  118. package/dist/src/gateway/compatibility.js.map +0 -1
  119. package/dist/src/gateway/delivery-machine.d.ts +0 -235
  120. package/dist/src/gateway/delivery-machine.js +0 -540
  121. package/dist/src/gateway/delivery-machine.js.map +0 -1
@@ -1,19 +1,17 @@
1
1
  export declare const callerIdentityConflictHintEn = "both agent identities were inherited; the Codex App Server daemon may have been started inside an agent session. From a normal terminal, run: codex app-server daemon restart";
2
2
  export declare const cliCopyEn: {
3
- readonly "help.usage": "Embassy — local messaging for Claude Code and Codex\n\nUsage:\n embassy <command> [options] [--lang en|zh-CN]\n\nCommands:\n serve [--inbound open] Run the socket-only broker (paired inbound by default)\n health Check broker health\n status Read the public status snapshot\n doctor Diagnose Codex Desktop attachment\n refresh-dashboard Publish both static dashboard files\n dashboard --live [--port <n>]\n Open live status and bounded route consent\n register-codex Register or succeed a Codex task\n unregister-codex Unregister the current Codex task\n select-claude Select a discovered Claude session\n unselect-claude Clear the Claude selection\n pair [--from <alias> --to <alias>] Add one cross-provider consent edge\n unpair [--from <alias> --to <alias>] Remove one cross-provider consent edge\n send-to-claude Send stdin to the selected Claude route\n send-to-codex Send stdin to a registered Codex route\n reply Reply with a conversation token\n delivery-status Read a delivery token\n wait-delivery Wait for terminal delivery status\n untrack Close one active progress watch\n\nOptions:\n --lang en|zh-CN Localize user-facing text\n --port <n> Live dashboard port, 1024–65535 (default 41961)\n --version, -v Print the version\n --help, -h Show this help\n";
3
+ readonly "help.usage": "Embassy — local messaging for Claude Code and Codex\n\nUsage:\n embassy <command> [options] [--lang en|zh-CN]\n\nCommands:\n serve [--inbound open] Run the socket-only broker (paired inbound by default)\n health Check broker health\n status Read the public status snapshot\n doctor Diagnose Codex Desktop attachment\n convert-state-v2-to-v3 Convert stopped-broker state after making a backup\n refresh-dashboard Refresh discovery and publish both static dashboards\n dashboard --live [--port <n>]\n Open live status and bounded route consent\n register-codex Register or succeed a Codex task\n unregister-codex Unregister the current Codex task\n select-claude Select a discovered Claude session\n unselect-claude Clear the Claude selection\n pair [--from <alias> --to <alias>] Add one cross-provider consent edge\n unpair [--from <alias> --to <alias>] Remove one cross-provider consent edge\n send-to-claude Send stdin to the selected Claude route\n send-to-codex Send stdin to a registered Codex route\n reply Reply with a conversation token\n delivery-status Read a delivery token\n wait-delivery Wait for terminal delivery status\n untrack Close one active progress watch\n\nOptions:\n --lang en|zh-CN Localize user-facing text\n --port <n> Live dashboard port, 1024–65535 (default 41961)\n --version, -v Print the version\n --help, -h Show this help\n";
4
4
  readonly "hint.dashboardLiveRequired": "dashboard requires --live; static files are published by serve and refresh-dashboard.";
5
5
  readonly "hint.dashboardPortInUse": "live dashboard port {port} is already in use; close the holding process or choose another with --port <n>.";
6
6
  readonly "hint.controlInvalidResponse": "client/broker version skew is likely; rebuild or repoint this client to the broker's Embassy installation, then retry.";
7
7
  readonly "hint.messageTooLarge": "message exceeds the 16 KiB acceptance cap; shorten or split it. For long prose, pipe the body from a file.";
8
8
  readonly "hint.progressWatchOwnerConflict": "this pair already has a watch owned by the other participant; ask that owner to run `embassy untrack --conversation <conversation-token>` first.";
9
- readonly "hint.codexSplitBrain": "Desktop is on a private App Server; its tasks are unreachable by Embassy. Relaunch: /usr/bin/open --env CODEX_APP_SERVER_USE_LOCAL_DAEMON=1 -a ChatGPT";
10
- readonly "hint.codexOrphaned": "the daemon is running but no Desktop client is attached; threads cannot load. Run: /usr/bin/open --env CODEX_APP_SERVER_USE_LOCAL_DAEMON=1 -a ChatGPT, then open your Codex task.";
11
9
  readonly "error.input": "request rejected.";
12
10
  readonly "error.decision": "gateway rejected the request.";
13
11
  readonly "error.unavailable": "gateway unavailable.";
14
12
  readonly "error.ambiguous": "outcome ambiguous; do not retry automatically.";
15
13
  readonly "error.failure": "command failed.";
16
14
  readonly "error.unsafe": "gateway state directory or socket has unexpected permissions or ownership. Verify nothing else controls that path before running embassy serve.";
17
- readonly "error.tokenUnknown": "delivery token not recognized; it may have expired or belong to a previous gateway session.";
15
+ readonly "error.tokenUnknown": "delivery token not recognized; it may have expired or left bounded retention.";
18
16
  readonly "error.deliveryTimeout": "the delivery has not settled yet; the gateway is still running. Check again later with embassy delivery-status.";
19
17
  };
@@ -10,7 +10,8 @@ Commands:
10
10
  health Check broker health
11
11
  status Read the public status snapshot
12
12
  doctor Diagnose Codex Desktop attachment
13
- refresh-dashboard Publish both static dashboard files
13
+ convert-state-v2-to-v3 Convert stopped-broker state after making a backup
14
+ refresh-dashboard Refresh discovery and publish both static dashboards
14
15
  dashboard --live [--port <n>]
15
16
  Open live status and bounded route consent
16
17
  register-codex Register or succeed a Codex task
@@ -37,15 +38,13 @@ Options:
37
38
  "hint.controlInvalidResponse": "client/broker version skew is likely; rebuild or repoint this client to the broker's Embassy installation, then retry.",
38
39
  "hint.messageTooLarge": "message exceeds the 16 KiB acceptance cap; shorten or split it. For long prose, pipe the body from a file.",
39
40
  "hint.progressWatchOwnerConflict": "this pair already has a watch owned by the other participant; ask that owner to run `embassy untrack --conversation <conversation-token>` first.",
40
- "hint.codexSplitBrain": "Desktop is on a private App Server; its tasks are unreachable by Embassy. Relaunch: /usr/bin/open --env CODEX_APP_SERVER_USE_LOCAL_DAEMON=1 -a ChatGPT",
41
- "hint.codexOrphaned": "the daemon is running but no Desktop client is attached; threads cannot load. Run: /usr/bin/open --env CODEX_APP_SERVER_USE_LOCAL_DAEMON=1 -a ChatGPT, then open your Codex task.",
42
41
  "error.input": "request rejected.",
43
42
  "error.decision": "gateway rejected the request.",
44
43
  "error.unavailable": "gateway unavailable.",
45
44
  "error.ambiguous": "outcome ambiguous; do not retry automatically.",
46
45
  "error.failure": "command failed.",
47
46
  "error.unsafe": "gateway state directory or socket has unexpected permissions or ownership. Verify nothing else controls that path before running embassy serve.",
48
- "error.tokenUnknown": "delivery token not recognized; it may have expired or belong to a previous gateway session.",
47
+ "error.tokenUnknown": "delivery token not recognized; it may have expired or left bounded retention.",
49
48
  "error.deliveryTimeout": "the delivery has not settled yet; the gateway is still running. Check again later with embassy delivery-status.",
50
49
  };
51
50
  //# sourceMappingURL=cli-copy.en.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"cli-copy.en.js","sourceRoot":"","sources":["../../../src/gateway/cli-copy.en.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,4BAA4B,GACvC,+KAA+K,CAAC;AAElL,MAAM,CAAC,MAAM,SAAS,GAAG;IACvB,YAAY,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+Bf;IACC,4BAA4B,EAC1B,uFAAuF;IACzF,yBAAyB,EACvB,4GAA4G;IAC9G,6BAA6B,EAC3B,wHAAwH;IAC1H,sBAAsB,EACpB,4GAA4G;IAC9G,iCAAiC,EAC/B,kJAAkJ;IACpJ,sBAAsB,EACpB,wJAAwJ;IAC1J,oBAAoB,EAClB,mLAAmL;IACrL,aAAa,EAAE,mBAAmB;IAClC,gBAAgB,EAAE,+BAA+B;IACjD,mBAAmB,EAAE,sBAAsB;IAC3C,iBAAiB,EAAE,gDAAgD;IACnE,eAAe,EAAE,iBAAiB;IAClC,cAAc,EACZ,iJAAiJ;IACnJ,oBAAoB,EAClB,6FAA6F;IAC/F,uBAAuB,EACrB,iHAAiH;CACzF,CAAC"}
1
+ {"version":3,"file":"cli-copy.en.js","sourceRoot":"","sources":["../../../src/gateway/cli-copy.en.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,4BAA4B,GACvC,+KAA+K,CAAC;AAElL,MAAM,CAAC,MAAM,SAAS,GAAG;IACvB,YAAY,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgCf;IACC,4BAA4B,EAC1B,uFAAuF;IACzF,yBAAyB,EACvB,4GAA4G;IAC9G,6BAA6B,EAC3B,wHAAwH;IAC1H,sBAAsB,EACpB,4GAA4G;IAC9G,iCAAiC,EAC/B,kJAAkJ;IACpJ,aAAa,EAAE,mBAAmB;IAClC,gBAAgB,EAAE,+BAA+B;IACjD,mBAAmB,EAAE,sBAAsB;IAC3C,iBAAiB,EAAE,gDAAgD;IACnE,eAAe,EAAE,iBAAiB;IAClC,cAAc,EACZ,iJAAiJ;IACnJ,oBAAoB,EAClB,+EAA+E;IACjF,uBAAuB,EACrB,iHAAiH;CACzF,CAAC"}
@@ -7,8 +7,6 @@ export const cliCopyKeys = [
7
7
  "hint.controlInvalidResponse",
8
8
  "hint.messageTooLarge",
9
9
  "hint.progressWatchOwnerConflict",
10
- "hint.codexSplitBrain",
11
- "hint.codexOrphaned",
12
10
  "error.input",
13
11
  "error.decision",
14
12
  "error.unavailable",
@@ -1 +1 @@
1
- {"version":3,"file":"cli-copy.js","sourceRoot":"","sources":["../../../src/gateway/cli-copy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAGlD,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,YAAY;IACZ,4BAA4B;IAC5B,yBAAyB;IACzB,6BAA6B;IAC7B,sBAAsB;IACtB,iCAAiC;IACjC,sBAAsB;IACtB,oBAAoB;IACpB,aAAa;IACb,gBAAgB;IAChB,mBAAmB;IACnB,iBAAiB;IACjB,eAAe;IACf,cAAc;IACd,oBAAoB;IACpB,uBAAuB;CACf,CAAC;AAQX,MAAM,UAAU,UAAU,CAAC,MAAuB;IAChD,OAAO,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC;AACtD,CAAC"}
1
+ {"version":3,"file":"cli-copy.js","sourceRoot":"","sources":["../../../src/gateway/cli-copy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAGlD,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,YAAY;IACZ,4BAA4B;IAC5B,yBAAyB;IACzB,6BAA6B;IAC7B,sBAAsB;IACtB,iCAAiC;IACjC,aAAa;IACb,gBAAgB;IAChB,mBAAmB;IACnB,iBAAiB;IACjB,eAAe;IACf,cAAc;IACd,oBAAoB;IACpB,uBAAuB;CACf,CAAC;AAQX,MAAM,UAAU,UAAU,CAAC,MAAuB;IAChD,OAAO,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC;AACtD,CAAC"}
@@ -1,19 +1,17 @@
1
1
  export declare const callerIdentityConflictHintZhCn = "\u540C\u65F6\u7EE7\u627F\u4E86\u4E24\u79CD\u4EE3\u7406\u8EAB\u4EFD\uFF1BCodex App Server \u5B88\u62A4\u8FDB\u7A0B\u53EF\u80FD\u662F\u5728\u4EE3\u7406\u4F1A\u8BDD\u5185\u542F\u52A8\u7684\u3002\u8BF7\u5728\u666E\u901A\u7EC8\u7AEF\u4E2D\u8FD0\u884C\uFF1Acodex app-server daemon restart";
2
2
  export declare const cliCopyZhCn: {
3
- readonly "help.usage": "Embassy — Claude Code 与 Codex 的本地消息通道\n\n用法:\n embassy <command> [options] [--lang en|zh-CN]\n\n命令:\n serve [--inbound open] 在前台运行仅使用套接字的代理(默认配对入站)\n health 检查代理健康状态\n status 读取公开状态快照\n doctor 诊断 Codex 桌面应用连接状态\n refresh-dashboard 发布两份静态仪表盘文件\n dashboard --live [--port <n>]\n 打开实时状态与有限路由同意操作\n register-codex 注册或继任 Codex 任务\n unregister-codex 注销当前 Codex 任务\n select-claude 选择已发现的 Claude 会话\n unselect-claude 清除 Claude 选择\n pair [--from <别名> --to <别名>] 添加一条跨提供商同意边\n unpair [--from <别名> --to <别名>] 移除一条跨提供商同意边\n send-to-claude 将标准输入发送到所选 Claude 路由\n send-to-codex 将标准输入发送到已注册 Codex 路由\n reply 使用会话令牌回复\n delivery-status 读取投递令牌状态\n wait-delivery 等待终结投递状态\n untrack 关闭一个活跃的进度监视\n\n选项:\n --lang en|zh-CN 本地化面向用户的文本\n --port <n> 实时仪表盘端口,1024–65535(默认 41961)\n --version, -v 输出版本\n --help, -h 显示此帮助\n";
3
+ readonly "help.usage": "Embassy — Claude Code 与 Codex 的本地消息通道\n\n用法:\n embassy <command> [options] [--lang en|zh-CN]\n\n命令:\n serve [--inbound open] 在前台运行仅使用套接字的代理(默认配对入站)\n health 检查代理健康状态\n status 读取公开状态快照\n doctor 诊断 Codex 桌面应用连接状态\n convert-state-v2-to-v3 备份后转换已停止代理的状态\n refresh-dashboard 刷新发现结果并发布两份静态仪表盘\n dashboard --live [--port <n>]\n 打开实时状态与有限路由同意操作\n register-codex 注册或继任 Codex 任务\n unregister-codex 注销当前 Codex 任务\n select-claude 选择已发现的 Claude 会话\n unselect-claude 清除 Claude 选择\n pair [--from <别名> --to <别名>] 添加一条跨提供商同意边\n unpair [--from <别名> --to <别名>] 移除一条跨提供商同意边\n send-to-claude 将标准输入发送到所选 Claude 路由\n send-to-codex 将标准输入发送到已注册 Codex 路由\n reply 使用会话令牌回复\n delivery-status 读取投递令牌状态\n wait-delivery 等待终结投递状态\n untrack 关闭一个活跃的进度监视\n\n选项:\n --lang en|zh-CN 本地化面向用户的文本\n --port <n> 实时仪表盘端口,1024–65535(默认 41961)\n --version, -v 输出版本\n --help, -h 显示此帮助\n";
4
4
  readonly "hint.dashboardLiveRequired": "dashboard 需要 --live;静态文件由 serve 和 refresh-dashboard 发布。";
5
5
  readonly "hint.dashboardPortInUse": "实时仪表盘端口 {port} 已被占用;请关闭占用进程,或使用 --port <n> 选择其他端口。";
6
6
  readonly "hint.controlInvalidResponse": "客户端与网关进程的版本可能不一致;请重新构建客户端,或将其重新指向网关进程所使用的 Embassy 安装,然后重试。";
7
7
  readonly "hint.messageTooLarge": "消息超过 16 KiB 接收上限;请缩短消息或将其拆分。对于长篇内容,请通过管道从文件传入正文。";
8
8
  readonly "hint.progressWatchOwnerConflict": "此配对已有由另一参与方拥有的监视;请先让该所有者运行 `embassy untrack --conversation <conversation-token>`。";
9
- readonly "hint.codexSplitBrain": "桌面应用正在使用私有 App Server;Embassy 无法访问其任务。请重新启动:/usr/bin/open --env CODEX_APP_SERVER_USE_LOCAL_DAEMON=1 -a ChatGPT";
10
- readonly "hint.codexOrphaned": "守护进程正在运行,但没有桌面客户端连接;线程无法加载。请运行:/usr/bin/open --env CODEX_APP_SERVER_USE_LOCAL_DAEMON=1 -a ChatGPT,然后打开你的 Codex 任务。";
11
9
  readonly "error.input": "请求被拒绝。";
12
10
  readonly "error.decision": "网关拒绝了该请求。";
13
11
  readonly "error.unavailable": "网关不可用。";
14
12
  readonly "error.ambiguous": "结果不确定;请勿自动重试。";
15
13
  readonly "error.failure": "命令失败。";
16
14
  readonly "error.unsafe": "网关状态目录或套接字的权限或所有者异常。请先确认该路径未被其他进程控制,再运行 embassy serve。";
17
- readonly "error.tokenUnknown": "无法识别该投递令牌;它可能已过期,或属于上一次网关会话。";
15
+ readonly "error.tokenUnknown": "无法识别该投递令牌;它可能已过期,或已超出有界保留范围。";
18
16
  readonly "error.deliveryTimeout": "该投递尚未结算;网关仍在运行。请稍后使用 embassy delivery-status 再次查询。";
19
17
  };
@@ -10,7 +10,8 @@ export const cliCopyZhCn = {
10
10
  health 检查代理健康状态
11
11
  status 读取公开状态快照
12
12
  doctor 诊断 Codex 桌面应用连接状态
13
- refresh-dashboard 发布两份静态仪表盘文件
13
+ convert-state-v2-to-v3 备份后转换已停止代理的状态
14
+ refresh-dashboard 刷新发现结果并发布两份静态仪表盘
14
15
  dashboard --live [--port <n>]
15
16
  打开实时状态与有限路由同意操作
16
17
  register-codex 注册或继任 Codex 任务
@@ -37,15 +38,13 @@ export const cliCopyZhCn = {
37
38
  "hint.controlInvalidResponse": "客户端与网关进程的版本可能不一致;请重新构建客户端,或将其重新指向网关进程所使用的 Embassy 安装,然后重试。",
38
39
  "hint.messageTooLarge": "消息超过 16 KiB 接收上限;请缩短消息或将其拆分。对于长篇内容,请通过管道从文件传入正文。",
39
40
  "hint.progressWatchOwnerConflict": "此配对已有由另一参与方拥有的监视;请先让该所有者运行 `embassy untrack --conversation <conversation-token>`。",
40
- "hint.codexSplitBrain": "桌面应用正在使用私有 App Server;Embassy 无法访问其任务。请重新启动:/usr/bin/open --env CODEX_APP_SERVER_USE_LOCAL_DAEMON=1 -a ChatGPT",
41
- "hint.codexOrphaned": "守护进程正在运行,但没有桌面客户端连接;线程无法加载。请运行:/usr/bin/open --env CODEX_APP_SERVER_USE_LOCAL_DAEMON=1 -a ChatGPT,然后打开你的 Codex 任务。",
42
41
  "error.input": "请求被拒绝。",
43
42
  "error.decision": "网关拒绝了该请求。",
44
43
  "error.unavailable": "网关不可用。",
45
44
  "error.ambiguous": "结果不确定;请勿自动重试。",
46
45
  "error.failure": "命令失败。",
47
46
  "error.unsafe": "网关状态目录或套接字的权限或所有者异常。请先确认该路径未被其他进程控制,再运行 embassy serve。",
48
- "error.tokenUnknown": "无法识别该投递令牌;它可能已过期,或属于上一次网关会话。",
47
+ "error.tokenUnknown": "无法识别该投递令牌;它可能已过期,或已超出有界保留范围。",
49
48
  "error.deliveryTimeout": "该投递尚未结算;网关仍在运行。请稍后使用 embassy delivery-status 再次查询。",
50
49
  };
51
50
  //# sourceMappingURL=cli-copy.zh-CN.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"cli-copy.zh-CN.js","sourceRoot":"","sources":["../../../src/gateway/cli-copy.zh-CN.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,8BAA8B,GACzC,yFAAyF,CAAC;AAE5F,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,YAAY,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+Bf;IACC,4BAA4B,EAC1B,yDAAyD;IAC3D,yBAAyB,EACvB,oDAAoD;IACtD,6BAA6B,EAC3B,4DAA4D;IAC9D,sBAAsB,EACpB,kDAAkD;IACpD,iCAAiC,EAC/B,mFAAmF;IACrF,sBAAsB,EACpB,gHAAgH;IAClH,oBAAoB,EAClB,oHAAoH;IACtH,aAAa,EAAE,QAAQ;IACvB,gBAAgB,EAAE,WAAW;IAC7B,mBAAmB,EAAE,QAAQ;IAC7B,iBAAiB,EAAE,eAAe;IAClC,eAAe,EAAE,OAAO;IACxB,cAAc,EACZ,wDAAwD;IAC1D,oBAAoB,EAAE,8BAA8B;IACpD,uBAAuB,EACrB,oDAAoD;CAC5B,CAAC"}
1
+ {"version":3,"file":"cli-copy.zh-CN.js","sourceRoot":"","sources":["../../../src/gateway/cli-copy.zh-CN.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,8BAA8B,GACzC,yFAAyF,CAAC;AAE5F,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,YAAY,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgCf;IACC,4BAA4B,EAC1B,yDAAyD;IAC3D,yBAAyB,EACvB,oDAAoD;IACtD,6BAA6B,EAC3B,4DAA4D;IAC9D,sBAAsB,EACpB,kDAAkD;IACpD,iCAAiC,EAC/B,mFAAmF;IACrF,aAAa,EAAE,QAAQ;IACvB,gBAAgB,EAAE,WAAW;IAC7B,mBAAmB,EAAE,QAAQ;IAC7B,iBAAiB,EAAE,eAAe;IAClC,eAAe,EAAE,OAAO;IACxB,cAAc,EACZ,wDAAwD;IAC1D,oBAAoB,EAAE,8BAA8B;IACpD,uBAAuB,EACrB,oDAAoD;CAC5B,CAAC"}
@@ -3,8 +3,9 @@ import { type GatewayControlMethod, type GatewayControlResponse, type SendGatewa
3
3
  import { type GatewayConfig } from "./config.js";
4
4
  import { type LiveDashboardCommandOutcome, type LiveDashboardCommandOptions } from "./live-dashboard-command.js";
5
5
  import { type GatewayServerOptions } from "./server.js";
6
- export declare const EMBASSY_VERSION = "1.7.1";
7
- export declare const gatewayCliCommands: readonly ["serve", "health", "status", "doctor", "delivery-status", "wait-delivery", "untrack", "refresh-dashboard", "dashboard", "register-codex", "unregister-codex", "select-claude", "unselect-claude", "pair", "unpair", "send-to-claude", "send-to-codex", "reply"];
6
+ import { type GatewayStateV2ToV3Result } from "./state-v2-to-v3.js";
7
+ export declare const EMBASSY_VERSION = "1.8.0";
8
+ export declare const gatewayCliCommands: readonly ["serve", "health", "status", "doctor", "convert-state-v2-to-v3", "delivery-status", "wait-delivery", "untrack", "refresh-dashboard", "dashboard", "register-codex", "unregister-codex", "select-claude", "unselect-claude", "pair", "unpair", "send-to-claude", "send-to-codex", "reply"];
8
9
  export type GatewayCliCommand = (typeof gatewayCliCommands)[number];
9
10
  export declare const gatewayCliExitCodes: Readonly<{
10
11
  readonly ok: 0;
@@ -20,6 +21,9 @@ type Writable = {
20
21
  type GatewayControlSender = <M extends GatewayControlMethod>(options: SendGatewayControlRequestOptions<M>) => Promise<GatewayControlResponse<M>>;
21
22
  type GatewayServerRunner = (options: GatewayServerOptions) => Promise<void>;
22
23
  type LiveDashboardRunner = (options: LiveDashboardCommandOptions) => Promise<LiveDashboardCommandOutcome | void>;
24
+ type GatewayStateConverter = (options: Readonly<{
25
+ stateDir: string;
26
+ }>) => Promise<GatewayStateV2ToV3Result>;
23
27
  export type GatewayCliDependencies = {
24
28
  env?: NodeJS.ProcessEnv;
25
29
  stdin?: AsyncIterable<unknown>;
@@ -29,6 +33,7 @@ export type GatewayCliDependencies = {
29
33
  sendRequest?: GatewayControlSender;
30
34
  runServer?: GatewayServerRunner;
31
35
  runLiveDashboard?: LiveDashboardRunner;
36
+ convertState?: GatewayStateConverter;
32
37
  serverSignal?: AbortSignal;
33
38
  liveDashboardSignal?: AbortSignal;
34
39
  validateControlSocket?: (stateDir: string, socketPath: string) => Promise<void>;