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,172 @@
1
+ import type { ClaudePeerInboundProgress } from "./claude-peer.js";
2
+ import type { AttestedClaudePeerRuntime } from "./claude-runtime.js";
3
+ import type { GatewayDeliveryNoticeMode } from "./config.js";
4
+ import type { DashboardLocale } from "./locale.js";
5
+ import type { GatewayAdapterDelivery, GatewayAdapterDispatchResult } from "./service.js";
6
+ import type { PrivateRouteBinding } from "./types.js";
7
+ export declare const CLAUDE_NATIVE_HELPER_PROTOCOL_VERSION: 1;
8
+ export declare const CLAUDE_NATIVE_HELPER_MAX_IPC_BYTES: number;
9
+ export declare const CLAUDE_NATIVE_HELPER_MAX_REQUESTS = 64;
10
+ export type ClaudeNativeHelperRegistration = Readonly<{
11
+ alias: string;
12
+ cwd: string;
13
+ }>;
14
+ export type ClaudeNativeHelperInitialization = Readonly<{
15
+ protocolVersion: 1;
16
+ type: "initialize";
17
+ requestId: string;
18
+ runtime: AttestedClaudePeerRuntime;
19
+ hostId: "this-mac";
20
+ locale: DashboardLocale;
21
+ deliveryNotices: GatewayDeliveryNoticeMode;
22
+ maxPendingMessages: number;
23
+ registration: ClaudeNativeHelperRegistration;
24
+ }>;
25
+ export type ClaudeNativeHelperCommand = Readonly<{
26
+ method: "resume_generation";
27
+ generation: string;
28
+ }> | Readonly<{
29
+ method: "authorize_route";
30
+ alias: string;
31
+ routeHandle: string;
32
+ stateRoot: string;
33
+ }> | Readonly<{
34
+ method: "release_route";
35
+ routeHandle: string;
36
+ }> | Readonly<{
37
+ method: "dispatch";
38
+ binding: PrivateRouteBinding;
39
+ authorization: "selected_route" | "native_reply";
40
+ messageId: string;
41
+ text: string;
42
+ expectsReply: boolean;
43
+ deadlineAt: string;
44
+ }> | Readonly<{
45
+ method: "update_inbound_status";
46
+ receiptHandle: string;
47
+ status: "held" | "delivered" | "denied" | "expired";
48
+ diagnosticCode?: string;
49
+ }> | Readonly<{
50
+ method: "notify_inbound_progress";
51
+ receiptHandle: string;
52
+ progress: ClaudePeerInboundProgress;
53
+ }> | Readonly<{
54
+ method: "release_inbound_receipt";
55
+ receiptHandle: string;
56
+ }> | Readonly<{
57
+ method: "update_status";
58
+ alias: string;
59
+ status: "idle" | "busy" | "waiting";
60
+ }> | Readonly<{
61
+ method: "unadvertise";
62
+ alias: string;
63
+ }> | Readonly<{
64
+ method: "quiesce_generation";
65
+ generation: string;
66
+ }> | Readonly<{
67
+ method: "observe_barrier";
68
+ generation: string;
69
+ }> | Readonly<{
70
+ method: "prepare_generation";
71
+ alias: string;
72
+ cwd: string;
73
+ generation: string;
74
+ }> | Readonly<{
75
+ method: "publish_prepared";
76
+ currentGeneration: string;
77
+ preparedGeneration: string;
78
+ }> | Readonly<{
79
+ method: "activate_prepared";
80
+ generation: string;
81
+ }> | Readonly<{
82
+ method: "cleanup_prepared";
83
+ generation: string;
84
+ }> | Readonly<{
85
+ method: "rollback_prepared";
86
+ preparedGeneration: string;
87
+ resumeGeneration: string;
88
+ }> | Readonly<{
89
+ method: "retire_generation";
90
+ retiredGeneration: string;
91
+ protectedActiveGeneration: string;
92
+ }> | Readonly<{
93
+ method: "purge_generation_replies";
94
+ generation: string;
95
+ }> | Readonly<{
96
+ method: "close";
97
+ }>;
98
+ export type ClaudeNativeHelperRequest = Readonly<{
99
+ protocolVersion: 1;
100
+ type: "request";
101
+ requestId: string;
102
+ command: ClaudeNativeHelperCommand;
103
+ }>;
104
+ export type ClaudeNativeHelperParentMessage = ClaudeNativeHelperInitialization | ClaudeNativeHelperRequest;
105
+ export type ClaudeNativeHelperEvent = Readonly<{
106
+ event: "delivery";
107
+ value: GatewayAdapterDelivery;
108
+ }> | Readonly<{
109
+ event: "claude_reply";
110
+ value: Readonly<{
111
+ routeHandle: string;
112
+ text: string;
113
+ }>;
114
+ }> | Readonly<{
115
+ event: "claude_message";
116
+ value: Readonly<{
117
+ routeHandle: string;
118
+ sourceAlias: string;
119
+ targetAlias: string;
120
+ text: string;
121
+ receiptHandle?: string;
122
+ }>;
123
+ }> | Readonly<{
124
+ event: "protocol_notice";
125
+ value: Readonly<{
126
+ code: string;
127
+ }>;
128
+ }>;
129
+ export type ClaudeNativeHelperResult = Readonly<{
130
+ generation: string;
131
+ }> | GatewayAdapterDispatchResult | Readonly<{
132
+ generation: string;
133
+ activeGenerationMatched: boolean;
134
+ ingressQuiesced: boolean;
135
+ monitorFrozen: boolean;
136
+ discoveryInFlight: boolean;
137
+ pendingOutboundReceipts: number;
138
+ pendingInboundReceipts: number;
139
+ rejectedInboundSettlements: number;
140
+ clean: boolean;
141
+ }> | Readonly<{
142
+ publication: "published" | "not_published" | "unknown";
143
+ }> | Readonly<{
144
+ released: boolean;
145
+ }> | Readonly<{
146
+ purged: number;
147
+ }> | Readonly<{
148
+ ok: true;
149
+ }>;
150
+ export type ClaudeNativeHelperChildMessage = Readonly<{
151
+ protocolVersion: 1;
152
+ type: "response";
153
+ requestId: string;
154
+ ok: true;
155
+ result: ClaudeNativeHelperResult;
156
+ }> | Readonly<{
157
+ protocolVersion: 1;
158
+ type: "response";
159
+ requestId: string;
160
+ ok: false;
161
+ error: Readonly<{
162
+ code: string;
163
+ recoverable: boolean;
164
+ }>;
165
+ }> | Readonly<{
166
+ protocolVersion: 1;
167
+ type: "event";
168
+ value: ClaudeNativeHelperEvent;
169
+ }>;
170
+ export declare function isClaudeNativeHelperParentMessage(value: unknown): value is ClaudeNativeHelperParentMessage;
171
+ export declare function isClaudeNativeHelperChildMessage(value: unknown): value is ClaudeNativeHelperChildMessage;
172
+ export declare function assertClaudeNativeHelperIpcSize(value: unknown): void;
@@ -0,0 +1,373 @@
1
+ export const CLAUDE_NATIVE_HELPER_PROTOCOL_VERSION = 1;
2
+ export const CLAUDE_NATIVE_HELPER_MAX_IPC_BYTES = 32 * 1024;
3
+ export const CLAUDE_NATIVE_HELPER_MAX_REQUESTS = 64;
4
+ const SAFE_CODE = /^[A-Z][A-Z0-9_]{0,95}$/;
5
+ const REQUEST_ID = /^[A-Za-z0-9_-]{16,64}$/;
6
+ const GENERATION = /^[A-Za-z0-9_-]{1,32}$/;
7
+ const UUID = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;
8
+ const ALIAS = /^[a-z][a-z0-9_-]{0,31}@[a-z0-9](?:[a-z0-9.-]{0,61}[a-z0-9])?$/;
9
+ const ROUTE = /^[A-Za-z0-9][A-Za-z0-9._:-]{0,255}$/;
10
+ function record(value) {
11
+ return value !== null && typeof value === "object" && !Array.isArray(value);
12
+ }
13
+ function exact(value, required, optional = []) {
14
+ const allowed = new Set([...required, ...optional]);
15
+ return (required.every((key) => Object.hasOwn(value, key)) &&
16
+ Object.keys(value).every((key) => allowed.has(key)));
17
+ }
18
+ function boundedString(value, maximum) {
19
+ return (typeof value === "string" &&
20
+ value.length > 0 &&
21
+ value.length <= maximum &&
22
+ !value.includes("\0"));
23
+ }
24
+ function iso(value) {
25
+ return typeof value === "string" && Number.isFinite(Date.parse(value));
26
+ }
27
+ function binding(value) {
28
+ return (record(value) &&
29
+ exact(value, [
30
+ "provider",
31
+ "hostId",
32
+ "routeHandle",
33
+ "ownerLease",
34
+ "endpointGeneration",
35
+ ]) &&
36
+ (value.provider === "claude" || value.provider === "codex") &&
37
+ value.hostId === "this-mac" &&
38
+ typeof value.routeHandle === "string" &&
39
+ ROUTE.test(value.routeHandle) &&
40
+ boundedString(value.ownerLease, 256) &&
41
+ boundedString(value.endpointGeneration, 256));
42
+ }
43
+ function registration(value) {
44
+ return (record(value) &&
45
+ exact(value, ["alias", "cwd"]) &&
46
+ typeof value.alias === "string" &&
47
+ ALIAS.test(value.alias) &&
48
+ value.alias.startsWith("codex-") &&
49
+ typeof value.cwd === "string" &&
50
+ value.cwd.startsWith("/") &&
51
+ value.cwd.length <= 4_096 &&
52
+ !value.cwd.includes("\0"));
53
+ }
54
+ function runtime(value) {
55
+ return (record(value) &&
56
+ exact(value, [
57
+ "claudeExecutable",
58
+ "claudeCodeVersion",
59
+ "sessionsDir",
60
+ "socketDir",
61
+ ]) &&
62
+ boundedString(value.claudeExecutable, 4_096) &&
63
+ value.claudeExecutable.startsWith("/") &&
64
+ boundedString(value.claudeCodeVersion, 64) &&
65
+ boundedString(value.sessionsDir, 4_096) &&
66
+ value.sessionsDir.startsWith("/") &&
67
+ boundedString(value.socketDir, 4_096) &&
68
+ value.socketDir.startsWith("/"));
69
+ }
70
+ function command(value) {
71
+ if (!record(value) || typeof value.method !== "string")
72
+ return false;
73
+ switch (value.method) {
74
+ case "close":
75
+ return exact(value, ["method"]);
76
+ case "resume_generation":
77
+ case "quiesce_generation":
78
+ case "observe_barrier":
79
+ case "activate_prepared":
80
+ case "cleanup_prepared":
81
+ case "purge_generation_replies":
82
+ return (exact(value, ["method", "generation"]) &&
83
+ typeof value.generation === "string" &&
84
+ GENERATION.test(value.generation));
85
+ case "authorize_route":
86
+ return (exact(value, ["method", "alias", "routeHandle", "stateRoot"]) &&
87
+ typeof value.alias === "string" &&
88
+ ALIAS.test(value.alias) &&
89
+ typeof value.routeHandle === "string" &&
90
+ UUID.test(value.routeHandle) &&
91
+ boundedString(value.stateRoot, 4_096) &&
92
+ value.stateRoot.startsWith("/"));
93
+ case "release_route":
94
+ return (exact(value, ["method", "routeHandle"]) &&
95
+ typeof value.routeHandle === "string" &&
96
+ UUID.test(value.routeHandle));
97
+ case "dispatch":
98
+ return (exact(value, [
99
+ "method",
100
+ "binding",
101
+ "authorization",
102
+ "messageId",
103
+ "text",
104
+ "expectsReply",
105
+ "deadlineAt",
106
+ ]) &&
107
+ binding(value.binding) &&
108
+ (value.authorization === "selected_route" ||
109
+ value.authorization === "native_reply") &&
110
+ boundedString(value.messageId, 256) &&
111
+ typeof value.text === "string" &&
112
+ Buffer.byteLength(value.text, "utf8") <= 16 * 1024 &&
113
+ typeof value.expectsReply === "boolean" &&
114
+ iso(value.deadlineAt));
115
+ case "update_inbound_status":
116
+ return (exact(value, ["method", "receiptHandle", "status"], ["diagnosticCode"]) &&
117
+ boundedString(value.receiptHandle, 256) &&
118
+ ["held", "delivered", "denied", "expired"].includes(String(value.status)) &&
119
+ (value.diagnosticCode === undefined ||
120
+ (typeof value.diagnosticCode === "string" &&
121
+ SAFE_CODE.test(value.diagnosticCode))));
122
+ case "notify_inbound_progress":
123
+ return (exact(value, ["method", "receiptHandle", "progress"]) &&
124
+ boundedString(value.receiptHandle, 256) &&
125
+ record(value.progress) &&
126
+ exact(value.progress, ["kind", "reason", "queuedForMs"]) &&
127
+ value.progress.kind === "stall" &&
128
+ [
129
+ "ROUTE_BUSY",
130
+ "ROUTE_UNAVAILABLE",
131
+ "CODEX_ROUTE_STALE",
132
+ "AWAITING_EXTERNAL_APPROVAL",
133
+ ].includes(String(value.progress.reason)) &&
134
+ Number.isSafeInteger(value.progress.queuedForMs) &&
135
+ Number(value.progress.queuedForMs) >= 0);
136
+ case "release_inbound_receipt":
137
+ return (exact(value, ["method", "receiptHandle"]) &&
138
+ boundedString(value.receiptHandle, 256));
139
+ case "update_status":
140
+ return (exact(value, ["method", "alias", "status"]) &&
141
+ typeof value.alias === "string" &&
142
+ ALIAS.test(value.alias) &&
143
+ ["idle", "busy", "waiting"].includes(String(value.status)));
144
+ case "unadvertise":
145
+ return (exact(value, ["method", "alias"]) &&
146
+ typeof value.alias === "string" &&
147
+ ALIAS.test(value.alias));
148
+ case "prepare_generation":
149
+ return (exact(value, ["method", "alias", "cwd", "generation"]) &&
150
+ registration({ alias: value.alias, cwd: value.cwd }) &&
151
+ typeof value.generation === "string" &&
152
+ GENERATION.test(value.generation));
153
+ case "publish_prepared":
154
+ return (exact(value, [
155
+ "method",
156
+ "currentGeneration",
157
+ "preparedGeneration",
158
+ ]) &&
159
+ typeof value.currentGeneration === "string" &&
160
+ GENERATION.test(value.currentGeneration) &&
161
+ typeof value.preparedGeneration === "string" &&
162
+ GENERATION.test(value.preparedGeneration));
163
+ case "rollback_prepared":
164
+ return (exact(value, [
165
+ "method",
166
+ "preparedGeneration",
167
+ "resumeGeneration",
168
+ ]) &&
169
+ typeof value.preparedGeneration === "string" &&
170
+ GENERATION.test(value.preparedGeneration) &&
171
+ typeof value.resumeGeneration === "string" &&
172
+ GENERATION.test(value.resumeGeneration));
173
+ case "retire_generation":
174
+ return (exact(value, [
175
+ "method",
176
+ "retiredGeneration",
177
+ "protectedActiveGeneration",
178
+ ]) &&
179
+ typeof value.retiredGeneration === "string" &&
180
+ GENERATION.test(value.retiredGeneration) &&
181
+ typeof value.protectedActiveGeneration === "string" &&
182
+ GENERATION.test(value.protectedActiveGeneration));
183
+ default:
184
+ return false;
185
+ }
186
+ }
187
+ export function isClaudeNativeHelperParentMessage(value) {
188
+ if (!record(value) || value.protocolVersion !== 1)
189
+ return false;
190
+ if (value.type === "initialize") {
191
+ return (exact(value, [
192
+ "protocolVersion",
193
+ "type",
194
+ "requestId",
195
+ "runtime",
196
+ "hostId",
197
+ "locale",
198
+ "deliveryNotices",
199
+ "maxPendingMessages",
200
+ "registration",
201
+ ]) &&
202
+ typeof value.requestId === "string" &&
203
+ REQUEST_ID.test(value.requestId) &&
204
+ runtime(value.runtime) &&
205
+ value.hostId === "this-mac" &&
206
+ (value.locale === "en" || value.locale === "zh-CN") &&
207
+ ["merged", "verbose", "quiet"].includes(String(value.deliveryNotices)) &&
208
+ Number.isSafeInteger(value.maxPendingMessages) &&
209
+ Number(value.maxPendingMessages) >= 1 &&
210
+ Number(value.maxPendingMessages) <= 4_096 &&
211
+ registration(value.registration));
212
+ }
213
+ return (value.type === "request" &&
214
+ exact(value, ["protocolVersion", "type", "requestId", "command"]) &&
215
+ typeof value.requestId === "string" &&
216
+ REQUEST_ID.test(value.requestId) &&
217
+ command(value.command));
218
+ }
219
+ export function isClaudeNativeHelperChildMessage(value) {
220
+ if (!record(value) || value.protocolVersion !== 1)
221
+ return false;
222
+ if (value.type === "event") {
223
+ if (!exact(value, ["protocolVersion", "type", "value"]) || !record(value.value)) {
224
+ return false;
225
+ }
226
+ const event = value.value;
227
+ if (!exact(event, ["event", "value"]) || !record(event.value))
228
+ return false;
229
+ if (event.event === "delivery") {
230
+ return (exact(event.value, ["messageId", "state"], ["safeErrorCode", "replyText"]) &&
231
+ boundedString(event.value.messageId, 256) &&
232
+ [
233
+ "transport_uncertain",
234
+ "transport_written",
235
+ "held",
236
+ "released",
237
+ "unconfirmed",
238
+ "denied",
239
+ "expired",
240
+ "ambiguous",
241
+ "completed",
242
+ "failed",
243
+ "cancelled",
244
+ ].includes(String(event.value.state)) &&
245
+ (event.value.safeErrorCode === undefined ||
246
+ (typeof event.value.safeErrorCode === "string" &&
247
+ SAFE_CODE.test(event.value.safeErrorCode))) &&
248
+ (event.value.replyText === undefined ||
249
+ (typeof event.value.replyText === "string" &&
250
+ Buffer.byteLength(event.value.replyText, "utf8") <= 64 * 1024)));
251
+ }
252
+ if (event.event === "claude_reply") {
253
+ return (exact(event.value, ["routeHandle", "text"]) &&
254
+ typeof event.value.routeHandle === "string" &&
255
+ UUID.test(event.value.routeHandle) &&
256
+ typeof event.value.text === "string" &&
257
+ Buffer.byteLength(event.value.text, "utf8") <= 16 * 1024);
258
+ }
259
+ if (event.event === "claude_message") {
260
+ return (exact(event.value, ["routeHandle", "sourceAlias", "targetAlias", "text"], ["receiptHandle"]) &&
261
+ typeof event.value.routeHandle === "string" &&
262
+ UUID.test(event.value.routeHandle) &&
263
+ typeof event.value.sourceAlias === "string" &&
264
+ ALIAS.test(event.value.sourceAlias) &&
265
+ typeof event.value.targetAlias === "string" &&
266
+ ALIAS.test(event.value.targetAlias) &&
267
+ typeof event.value.text === "string" &&
268
+ Buffer.byteLength(event.value.text, "utf8") <= 16 * 1024 &&
269
+ (event.value.receiptHandle === undefined ||
270
+ boundedString(event.value.receiptHandle, 256)));
271
+ }
272
+ return (event.event === "protocol_notice" &&
273
+ exact(event.value, ["code"]) &&
274
+ typeof event.value.code === "string" &&
275
+ SAFE_CODE.test(event.value.code));
276
+ }
277
+ if (value.type !== "response" ||
278
+ typeof value.requestId !== "string" ||
279
+ !REQUEST_ID.test(value.requestId) ||
280
+ typeof value.ok !== "boolean") {
281
+ return false;
282
+ }
283
+ if (value.ok) {
284
+ return (exact(value, ["protocolVersion", "type", "requestId", "ok", "result"]) &&
285
+ helperResult(value.result));
286
+ }
287
+ return (exact(value, ["protocolVersion", "type", "requestId", "ok", "error"]) &&
288
+ record(value.error) &&
289
+ exact(value.error, ["code", "recoverable"]) &&
290
+ typeof value.error.code === "string" &&
291
+ SAFE_CODE.test(value.error.code) &&
292
+ typeof value.error.recoverable === "boolean");
293
+ }
294
+ function helperResult(value) {
295
+ if (!record(value))
296
+ return false;
297
+ if (exact(value, ["generation"]) &&
298
+ typeof value.generation === "string" &&
299
+ GENERATION.test(value.generation)) {
300
+ return true;
301
+ }
302
+ if (exact(value, ["ok"]) && value.ok === true)
303
+ return true;
304
+ if (exact(value, ["publication"]) &&
305
+ ["published", "not_published", "unknown"].includes(String(value.publication))) {
306
+ return true;
307
+ }
308
+ if (exact(value, ["released"]) && typeof value.released === "boolean") {
309
+ return true;
310
+ }
311
+ if (exact(value, ["purged"]) &&
312
+ Number.isSafeInteger(value.purged) &&
313
+ Number(value.purged) >= 0) {
314
+ return true;
315
+ }
316
+ if (exact(value, [
317
+ "generation",
318
+ "activeGenerationMatched",
319
+ "ingressQuiesced",
320
+ "monitorFrozen",
321
+ "discoveryInFlight",
322
+ "pendingOutboundReceipts",
323
+ "pendingInboundReceipts",
324
+ "rejectedInboundSettlements",
325
+ "clean",
326
+ ])) {
327
+ return (typeof value.generation === "string" &&
328
+ GENERATION.test(value.generation) &&
329
+ [
330
+ value.activeGenerationMatched,
331
+ value.ingressQuiesced,
332
+ value.monitorFrozen,
333
+ value.discoveryInFlight,
334
+ value.clean,
335
+ ].every((entry) => typeof entry === "boolean") &&
336
+ [
337
+ value.pendingOutboundReceipts,
338
+ value.pendingInboundReceipts,
339
+ value.rejectedInboundSettlements,
340
+ ].every((entry) => Number.isSafeInteger(entry) && Number(entry) >= 0));
341
+ }
342
+ if (!exact(value, ["state"], ["safeErrorCode", "replyText"]) ||
343
+ ![
344
+ "pending",
345
+ "accepted",
346
+ "deferred",
347
+ "delivered",
348
+ "failed",
349
+ "ambiguous",
350
+ "cancelled",
351
+ ].includes(String(value.state)) ||
352
+ (value.safeErrorCode !== undefined &&
353
+ (typeof value.safeErrorCode !== "string" ||
354
+ !SAFE_CODE.test(value.safeErrorCode))) ||
355
+ (value.replyText !== undefined &&
356
+ (typeof value.replyText !== "string" ||
357
+ Buffer.byteLength(value.replyText, "utf8") > 64 * 1024))) {
358
+ return false;
359
+ }
360
+ if (value.state === "pending" ||
361
+ value.state === "accepted" ||
362
+ value.state === "deferred") {
363
+ return value.replyText === undefined;
364
+ }
365
+ return true;
366
+ }
367
+ export function assertClaudeNativeHelperIpcSize(value) {
368
+ if (Buffer.byteLength(JSON.stringify(value), "utf8") >
369
+ CLAUDE_NATIVE_HELPER_MAX_IPC_BYTES) {
370
+ throw new RangeError("CLAUDE_NATIVE_HELPER_IPC_TOO_LARGE");
371
+ }
372
+ }
373
+ //# sourceMappingURL=claude-helper-protocol.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claude-helper-protocol.js","sourceRoot":"","sources":["../../../src/gateway/claude-helper-protocol.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,74 @@
1
+ import type { AttestedClaudePeerRuntime } from "./claude-runtime.js";
2
+ import { type ClaudeNativeHelperFactory } from "./claude-helper-client.js";
3
+ import type { GatewayDeliveryNoticeMode } from "./config.js";
4
+ import type { DashboardLocale } from "./locale.js";
5
+ import type { ClaudeNativeCodexSuccessionBarrier } from "./providers.js";
6
+ import type { GatewayAdapterCallbacks, GatewayAdapterDispatchResult } from "./service.js";
7
+ import type { PrivateEndpointIdentity, PrivateRouteBinding } from "./types.js";
8
+ export type ClaudeNativeHelperSupervisorOptions = Readonly<{
9
+ identity: PrivateEndpointIdentity;
10
+ runtime: AttestedClaudePeerRuntime;
11
+ locale: DashboardLocale;
12
+ deliveryNotices: GatewayDeliveryNoticeMode;
13
+ maxPendingMessages: number;
14
+ maxHelpers: number;
15
+ callbacks: () => GatewayAdapterCallbacks | undefined;
16
+ factory?: ClaudeNativeHelperFactory;
17
+ }>;
18
+ export declare class ClaudeNativeHelperSupervisor {
19
+ #private;
20
+ constructor(options: ClaudeNativeHelperSupervisorOptions);
21
+ get size(): number;
22
+ advertise(input: Readonly<{
23
+ alias: string;
24
+ cwd: string;
25
+ }>): Promise<void>;
26
+ currentGeneration(alias: string): string;
27
+ updateStatus(alias: string, status: "idle" | "busy" | "waiting"): Promise<void>;
28
+ unadvertise(alias: string): Promise<void>;
29
+ dispatch(input: Readonly<{
30
+ sourceAlias: string;
31
+ selectedAlias?: string;
32
+ stateRoot?: string;
33
+ binding: PrivateRouteBinding;
34
+ authorization: "selected_route" | "native_reply";
35
+ messageId: string;
36
+ text: string;
37
+ expectsReply: boolean;
38
+ deadlineAt: string;
39
+ }>): Promise<GatewayAdapterDispatchResult>;
40
+ releaseRoute(routeHandle: string): Promise<void>;
41
+ updateInboundStatus(receiptHandle: string, status: "held" | "delivered" | "denied" | "expired", diagnosticCode?: string): Promise<void>;
42
+ notifyInboundProgress(receiptHandle: string, progress: Readonly<{
43
+ kind: "stall";
44
+ reason: "ROUTE_BUSY" | "ROUTE_UNAVAILABLE" | "CODEX_ROUTE_STALE" | "AWAITING_EXTERNAL_APPROVAL";
45
+ queuedForMs: number;
46
+ }>): Promise<void>;
47
+ releaseInboundReceipt(receiptHandle: string): Promise<boolean>;
48
+ quiesceAll(): Promise<void>;
49
+ quiesceGeneration(generation: string): Promise<void>;
50
+ observeBarrier(generation: string): Promise<ClaudeNativeCodexSuccessionBarrier>;
51
+ prepareGeneration(input: Readonly<{
52
+ alias: string;
53
+ cwd: string;
54
+ generation: string;
55
+ currentGeneration: string;
56
+ }>): Promise<void>;
57
+ publishPrepared(input: Readonly<{
58
+ currentGeneration: string;
59
+ preparedGeneration: string;
60
+ }>): Promise<"published" | "not_published" | "unknown">;
61
+ activatePrepared(generation: string): Promise<void>;
62
+ cleanupPrepared(generation: string): Promise<void>;
63
+ resumeGeneration(generation: string): Promise<void>;
64
+ rollbackPrepared(input: Readonly<{
65
+ preparedGeneration: string;
66
+ resumeGeneration: string;
67
+ }>): Promise<void>;
68
+ retireGeneration(input: Readonly<{
69
+ retiredGeneration: string;
70
+ protectedActiveGeneration: string;
71
+ }>): Promise<void>;
72
+ purgeGenerationReplies(generation: string): Promise<number>;
73
+ close(): Promise<void>;
74
+ }