agent-embassy 1.0.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 (145) hide show
  1. package/CHANGELOG.md +61 -0
  2. package/CONTRIBUTING.md +122 -0
  3. package/LICENSE +21 -0
  4. package/README.md +185 -0
  5. package/README.zh-CN.md +185 -0
  6. package/SECURITY.md +224 -0
  7. package/assets/live-dashboard/app.css +1610 -0
  8. package/assets/mark-seal.svg +7 -0
  9. package/assets/mark.svg +7 -0
  10. package/assets/social-preview.png +0 -0
  11. package/assets/vendor/react/LICENSE +21 -0
  12. package/assets/vendor/react/react-dom.production.min.js +267 -0
  13. package/assets/vendor/react/react.production.min.js +31 -0
  14. package/dist/src/errors.d.ts +5 -0
  15. package/dist/src/errors.js +11 -0
  16. package/dist/src/errors.js.map +1 -0
  17. package/dist/src/gateway/claude-compatibility-scratch.d.ts +18 -0
  18. package/dist/src/gateway/claude-compatibility-scratch.js +158 -0
  19. package/dist/src/gateway/claude-compatibility-scratch.js.map +1 -0
  20. package/dist/src/gateway/claude-helper-client.d.ts +43 -0
  21. package/dist/src/gateway/claude-helper-client.js +212 -0
  22. package/dist/src/gateway/claude-helper-client.js.map +1 -0
  23. package/dist/src/gateway/claude-helper-protocol.d.ts +172 -0
  24. package/dist/src/gateway/claude-helper-protocol.js +373 -0
  25. package/dist/src/gateway/claude-helper-protocol.js.map +1 -0
  26. package/dist/src/gateway/claude-helper-supervisor.d.ts +74 -0
  27. package/dist/src/gateway/claude-helper-supervisor.js +497 -0
  28. package/dist/src/gateway/claude-helper-supervisor.js.map +1 -0
  29. package/dist/src/gateway/claude-helper.d.ts +1 -0
  30. package/dist/src/gateway/claude-helper.js +269 -0
  31. package/dist/src/gateway/claude-helper.js.map +1 -0
  32. package/dist/src/gateway/claude-peer.d.ts +273 -0
  33. package/dist/src/gateway/claude-peer.js +2359 -0
  34. package/dist/src/gateway/claude-peer.js.map +1 -0
  35. package/dist/src/gateway/claude-runtime.d.ts +40 -0
  36. package/dist/src/gateway/claude-runtime.js +302 -0
  37. package/dist/src/gateway/claude-runtime.js.map +1 -0
  38. package/dist/src/gateway/cli-copy.d.ts +8 -0
  39. package/dist/src/gateway/cli-copy.en.d.ts +13 -0
  40. package/dist/src/gateway/cli-copy.en.js +43 -0
  41. package/dist/src/gateway/cli-copy.en.js.map +1 -0
  42. package/dist/src/gateway/cli-copy.js +19 -0
  43. package/dist/src/gateway/cli-copy.js.map +1 -0
  44. package/dist/src/gateway/cli-copy.zh-CN.d.ts +13 -0
  45. package/dist/src/gateway/cli-copy.zh-CN.js +43 -0
  46. package/dist/src/gateway/cli-copy.zh-CN.js.map +1 -0
  47. package/dist/src/gateway/cli.d.ts +44 -0
  48. package/dist/src/gateway/cli.js +969 -0
  49. package/dist/src/gateway/cli.js.map +1 -0
  50. package/dist/src/gateway/codex-app-server.d.ts +310 -0
  51. package/dist/src/gateway/codex-app-server.js +1746 -0
  52. package/dist/src/gateway/codex-app-server.js.map +1 -0
  53. package/dist/src/gateway/codex-local-transport.d.ts +81 -0
  54. package/dist/src/gateway/codex-local-transport.js +617 -0
  55. package/dist/src/gateway/codex-local-transport.js.map +1 -0
  56. package/dist/src/gateway/codex-registration-generation.d.ts +5 -0
  57. package/dist/src/gateway/codex-registration-generation.js +19 -0
  58. package/dist/src/gateway/codex-registration-generation.js.map +1 -0
  59. package/dist/src/gateway/codex-registration-succession.d.ts +209 -0
  60. package/dist/src/gateway/codex-registration-succession.js +588 -0
  61. package/dist/src/gateway/codex-registration-succession.js.map +1 -0
  62. package/dist/src/gateway/compatibility.d.ts +70 -0
  63. package/dist/src/gateway/compatibility.js +252 -0
  64. package/dist/src/gateway/compatibility.js.map +1 -0
  65. package/dist/src/gateway/config.d.ts +24 -0
  66. package/dist/src/gateway/config.js +130 -0
  67. package/dist/src/gateway/config.js.map +1 -0
  68. package/dist/src/gateway/control.d.ts +308 -0
  69. package/dist/src/gateway/control.js +1573 -0
  70. package/dist/src/gateway/control.js.map +1 -0
  71. package/dist/src/gateway/dashboard-copy.d.ts +7 -0
  72. package/dist/src/gateway/dashboard-copy.en.d.ts +506 -0
  73. package/dist/src/gateway/dashboard-copy.en.js +507 -0
  74. package/dist/src/gateway/dashboard-copy.en.js.map +1 -0
  75. package/dist/src/gateway/dashboard-copy.js +516 -0
  76. package/dist/src/gateway/dashboard-copy.js.map +1 -0
  77. package/dist/src/gateway/dashboard-copy.zh-CN.d.ts +506 -0
  78. package/dist/src/gateway/dashboard-copy.zh-CN.js +507 -0
  79. package/dist/src/gateway/dashboard-copy.zh-CN.js.map +1 -0
  80. package/dist/src/gateway/dashboard-model.d.ts +207 -0
  81. package/dist/src/gateway/dashboard-model.js +720 -0
  82. package/dist/src/gateway/dashboard-model.js.map +1 -0
  83. package/dist/src/gateway/dashboard.d.ts +26 -0
  84. package/dist/src/gateway/dashboard.js +941 -0
  85. package/dist/src/gateway/dashboard.js.map +1 -0
  86. package/dist/src/gateway/delivery-machine.d.ts +235 -0
  87. package/dist/src/gateway/delivery-machine.js +540 -0
  88. package/dist/src/gateway/delivery-machine.js.map +1 -0
  89. package/dist/src/gateway/instance-lease.d.ts +21 -0
  90. package/dist/src/gateway/instance-lease.js +549 -0
  91. package/dist/src/gateway/instance-lease.js.map +1 -0
  92. package/dist/src/gateway/live-dashboard-app/app.js +2914 -0
  93. package/dist/src/gateway/live-dashboard-assets.d.ts +10 -0
  94. package/dist/src/gateway/live-dashboard-assets.js +73 -0
  95. package/dist/src/gateway/live-dashboard-assets.js.map +1 -0
  96. package/dist/src/gateway/live-dashboard-bootstrap.d.ts +36 -0
  97. package/dist/src/gateway/live-dashboard-bootstrap.js +176 -0
  98. package/dist/src/gateway/live-dashboard-bootstrap.js.map +1 -0
  99. package/dist/src/gateway/live-dashboard-command.d.ts +54 -0
  100. package/dist/src/gateway/live-dashboard-command.js +324 -0
  101. package/dist/src/gateway/live-dashboard-command.js.map +1 -0
  102. package/dist/src/gateway/live-dashboard-http.d.ts +41 -0
  103. package/dist/src/gateway/live-dashboard-http.js +445 -0
  104. package/dist/src/gateway/live-dashboard-http.js.map +1 -0
  105. package/dist/src/gateway/live-dashboard-protocol.d.ts +38 -0
  106. package/dist/src/gateway/live-dashboard-protocol.js +156 -0
  107. package/dist/src/gateway/live-dashboard-protocol.js.map +1 -0
  108. package/dist/src/gateway/live-dashboard-server.d.ts +33 -0
  109. package/dist/src/gateway/live-dashboard-server.js +130 -0
  110. package/dist/src/gateway/live-dashboard-server.js.map +1 -0
  111. package/dist/src/gateway/live-dashboard-stream.d.ts +46 -0
  112. package/dist/src/gateway/live-dashboard-stream.js +233 -0
  113. package/dist/src/gateway/live-dashboard-stream.js.map +1 -0
  114. package/dist/src/gateway/live-dashboard.d.ts +31 -0
  115. package/dist/src/gateway/live-dashboard.js +190 -0
  116. package/dist/src/gateway/live-dashboard.js.map +1 -0
  117. package/dist/src/gateway/locale.d.ts +4 -0
  118. package/dist/src/gateway/locale.js +10 -0
  119. package/dist/src/gateway/locale.js.map +1 -0
  120. package/dist/src/gateway/progress-watch-machine.d.ts +97 -0
  121. package/dist/src/gateway/progress-watch-machine.js +172 -0
  122. package/dist/src/gateway/progress-watch-machine.js.map +1 -0
  123. package/dist/src/gateway/providers.d.ts +287 -0
  124. package/dist/src/gateway/providers.js +2451 -0
  125. package/dist/src/gateway/providers.js.map +1 -0
  126. package/dist/src/gateway/server.d.ts +57 -0
  127. package/dist/src/gateway/server.js +264 -0
  128. package/dist/src/gateway/server.js.map +1 -0
  129. package/dist/src/gateway/service.d.ts +449 -0
  130. package/dist/src/gateway/service.js +4831 -0
  131. package/dist/src/gateway/service.js.map +1 -0
  132. package/dist/src/gateway/store.d.ts +340 -0
  133. package/dist/src/gateway/store.js +4047 -0
  134. package/dist/src/gateway/store.js.map +1 -0
  135. package/dist/src/gateway/types.d.ts +514 -0
  136. package/dist/src/gateway/types.js +414 -0
  137. package/dist/src/gateway/types.js.map +1 -0
  138. package/dist/src/mutex.d.ts +4 -0
  139. package/dist/src/mutex.js +23 -0
  140. package/dist/src/mutex.js.map +1 -0
  141. package/docs/DESIGN.md +134 -0
  142. package/docs/GATEWAY-ARCHITECTURE.md +858 -0
  143. package/package.json +80 -0
  144. package/skills/embassy-peer/SKILL.md +198 -0
  145. package/skills/embassy-peer/agents/openai.yaml +4 -0
@@ -0,0 +1,19 @@
1
+ import { cliCopyEn } from "./cli-copy.en.js";
2
+ import { cliCopyZhCn } from "./cli-copy.zh-CN.js";
3
+ export const cliCopyKeys = [
4
+ "help.usage",
5
+ "hint.dashboardLiveRequired",
6
+ "error.input",
7
+ "error.decision",
8
+ "error.unavailable",
9
+ "error.ambiguous",
10
+ "error.failure",
11
+ "error.unsafe",
12
+ "error.tokenUnknown",
13
+ "error.deliveryTimeout",
14
+ "error.versionDrift",
15
+ ];
16
+ export function getCliCopy(locale) {
17
+ return locale === "zh-CN" ? cliCopyZhCn : cliCopyEn;
18
+ }
19
+ //# sourceMappingURL=cli-copy.js.map
@@ -0,0 +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,aAAa;IACb,gBAAgB;IAChB,mBAAmB;IACnB,iBAAiB;IACjB,eAAe;IACf,cAAc;IACd,oBAAoB;IACpB,uBAAuB;IACvB,oBAAoB;CACZ,CAAC;AAQX,MAAM,UAAU,UAAU,CAAC,MAAuB;IAChD,OAAO,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC;AACtD,CAAC"}
@@ -0,0 +1,13 @@
1
+ export declare const cliCopyZhCn: {
2
+ 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 compat-check 运行有限且不发送消息的兼容性探测\n compat-certify 运行有界在线链路认证 [--codex 别名] [--with-turn]\n refresh-dashboard 发布两份静态仪表盘文件\n dashboard --live 打开实时状态与有限路由同意操作\n register-codex 注册或继任 Codex 任务\n unregister-codex 注销当前 Codex 任务\n select-claude 选择已发现的 Claude 会话\n unselect-claude 清除 Claude 选择\n pair 添加一条 Claude↔Codex 同意边\n unpair 移除一条 Claude↔Codex 同意边\n send-to-claude 将标准输入发送到所选 Claude 路由\n send-to-codex 将标准输入发送到已注册 Codex 路由\n reply 使用会话令牌回复\n delivery-status 读取投递令牌状态\n wait-delivery 等待终结投递状态\n\n选项:\n --lang en|zh-CN 本地化面向用户的文本\n --version, -v 输出版本\n --help, -h 显示此帮助\n";
3
+ readonly "hint.dashboardLiveRequired": "dashboard 需要 --live;静态文件由 serve 和 refresh-dashboard 发布。";
4
+ readonly "error.input": "请求被拒绝。";
5
+ readonly "error.decision": "网关拒绝了该请求。";
6
+ readonly "error.unavailable": "网关不可用。";
7
+ readonly "error.ambiguous": "结果不确定;请勿自动重试。";
8
+ readonly "error.failure": "命令失败。";
9
+ readonly "error.unsafe": "网关状态目录或套接字的权限或所有者异常。请先确认该路径未被其他进程控制,再运行 embassy serve。";
10
+ readonly "error.tokenUnknown": "无法识别该投递令牌;它可能已过期,或属于上一次网关会话。";
11
+ readonly "error.deliveryTimeout": "该投递尚未结算;网关仍在运行。请稍后使用 embassy delivery-status 再次查询。";
12
+ readonly "error.versionDrift": "已安装的 Claude Code 版本高于此 Embassy 构建支持的版本。请更新 Embassy(npm update -g agent-embassy),然后运行 embassy health。";
13
+ };
@@ -0,0 +1,43 @@
1
+ export const cliCopyZhCn = {
2
+ "help.usage": `Embassy — Claude Code 与 Codex 的本地消息通道
3
+
4
+ 用法:
5
+ embassy <command> [options] [--lang en|zh-CN]
6
+
7
+ 命令:
8
+ serve [--inbound open] 在前台运行仅使用套接字的代理(默认配对入站)
9
+ health 检查代理健康状态
10
+ status 读取公开状态快照
11
+ compat-check 运行有限且不发送消息的兼容性探测
12
+ compat-certify 运行有界在线链路认证 [--codex 别名] [--with-turn]
13
+ refresh-dashboard 发布两份静态仪表盘文件
14
+ dashboard --live 打开实时状态与有限路由同意操作
15
+ register-codex 注册或继任 Codex 任务
16
+ unregister-codex 注销当前 Codex 任务
17
+ select-claude 选择已发现的 Claude 会话
18
+ unselect-claude 清除 Claude 选择
19
+ pair 添加一条 Claude↔Codex 同意边
20
+ unpair 移除一条 Claude↔Codex 同意边
21
+ send-to-claude 将标准输入发送到所选 Claude 路由
22
+ send-to-codex 将标准输入发送到已注册 Codex 路由
23
+ reply 使用会话令牌回复
24
+ delivery-status 读取投递令牌状态
25
+ wait-delivery 等待终结投递状态
26
+
27
+ 选项:
28
+ --lang en|zh-CN 本地化面向用户的文本
29
+ --version, -v 输出版本
30
+ --help, -h 显示此帮助
31
+ `,
32
+ "hint.dashboardLiveRequired": "dashboard 需要 --live;静态文件由 serve 和 refresh-dashboard 发布。",
33
+ "error.input": "请求被拒绝。",
34
+ "error.decision": "网关拒绝了该请求。",
35
+ "error.unavailable": "网关不可用。",
36
+ "error.ambiguous": "结果不确定;请勿自动重试。",
37
+ "error.failure": "命令失败。",
38
+ "error.unsafe": "网关状态目录或套接字的权限或所有者异常。请先确认该路径未被其他进程控制,再运行 embassy serve。",
39
+ "error.tokenUnknown": "无法识别该投递令牌;它可能已过期,或属于上一次网关会话。",
40
+ "error.deliveryTimeout": "该投递尚未结算;网关仍在运行。请稍后使用 embassy delivery-status 再次查询。",
41
+ "error.versionDrift": "已安装的 Claude Code 版本高于此 Embassy 构建支持的版本。请更新 Embassy(npm update -g agent-embassy),然后运行 embassy health。",
42
+ };
43
+ //# sourceMappingURL=cli-copy.zh-CN.js.map
@@ -0,0 +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,WAAW,GAAG;IACzB,YAAY,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6Bf;IACC,4BAA4B,EAC1B,yDAAyD;IAC3D,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;IACtD,oBAAoB,EAClB,sGAAsG;CAC9E,CAAC"}
@@ -0,0 +1,44 @@
1
+ #!/usr/bin/env node
2
+ import { type GatewayControlMethod, type GatewayControlResponse, type SendGatewayControlRequestOptions } from "./control.js";
3
+ import { type GatewayConfig } from "./config.js";
4
+ import { type LiveDashboardCommandOutcome, type LiveDashboardCommandOptions } from "./live-dashboard-command.js";
5
+ import { type GatewayServerOptions } from "./server.js";
6
+ export declare const EMBASSY_VERSION = "1.0.0";
7
+ export declare const gatewayCliCommands: readonly ["serve", "health", "status", "compat-check", "compat-certify", "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
+ export type GatewayCliCommand = (typeof gatewayCliCommands)[number];
9
+ export declare const gatewayCliExitCodes: Readonly<{
10
+ readonly ok: 0;
11
+ readonly invalidInput: 2;
12
+ readonly rejected: 3;
13
+ readonly unavailable: 4;
14
+ readonly ambiguous: 5;
15
+ readonly failure: 6;
16
+ readonly claudeCertificationFailed: 7;
17
+ readonly codexCertificationFailed: 8;
18
+ readonly multipleCertificationsFailed: 9;
19
+ }>;
20
+ type Writable = {
21
+ write(chunk: string): unknown;
22
+ };
23
+ type GatewayControlSender = <M extends GatewayControlMethod>(options: SendGatewayControlRequestOptions<M>) => Promise<GatewayControlResponse<M>>;
24
+ type GatewayServerRunner = (options: GatewayServerOptions) => Promise<void>;
25
+ type LiveDashboardRunner = (options: LiveDashboardCommandOptions) => Promise<LiveDashboardCommandOutcome | void>;
26
+ export type GatewayCliDependencies = {
27
+ env?: NodeJS.ProcessEnv;
28
+ stdin?: AsyncIterable<unknown>;
29
+ stdout?: Writable;
30
+ stderr?: Writable;
31
+ loadConfig?: (env: NodeJS.ProcessEnv) => GatewayConfig;
32
+ sendRequest?: GatewayControlSender;
33
+ runServer?: GatewayServerRunner;
34
+ runLiveDashboard?: LiveDashboardRunner;
35
+ serverSignal?: AbortSignal;
36
+ liveDashboardSignal?: AbortSignal;
37
+ validateControlSocket?: (stateDir: string, socketPath: string) => Promise<void>;
38
+ now?: () => number;
39
+ delay?: (milliseconds: number) => Promise<void>;
40
+ };
41
+ export declare function validatePrivateGatewayControlSocket(stateDir: string, socketPath: string): Promise<void>;
42
+ /** Run one command; foreground runners own and release their signal handlers. */
43
+ export declare function runGatewayCli(argv?: readonly string[], dependencies?: GatewayCliDependencies): Promise<number>;
44
+ export {};