agent-embassy 1.0.0 → 1.3.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 (102) hide show
  1. package/CHANGELOG.md +68 -0
  2. package/CONTRIBUTING.md +25 -7
  3. package/README.md +66 -13
  4. package/README.zh-CN.md +41 -13
  5. package/SECURITY.md +80 -42
  6. package/assets/live-dashboard/app.css +14 -5
  7. package/dist/src/gateway/claude-helper-protocol.d.ts +3 -0
  8. package/dist/src/gateway/claude-helper-protocol.js +15 -1
  9. package/dist/src/gateway/claude-helper-protocol.js.map +1 -1
  10. package/dist/src/gateway/claude-helper-supervisor.d.ts +2 -0
  11. package/dist/src/gateway/claude-helper-supervisor.js +24 -1
  12. package/dist/src/gateway/claude-helper-supervisor.js.map +1 -1
  13. package/dist/src/gateway/claude-runtime.d.ts +0 -2
  14. package/dist/src/gateway/claude-runtime.js +6 -17
  15. package/dist/src/gateway/claude-runtime.js.map +1 -1
  16. package/dist/src/gateway/cli-copy.d.ts +1 -1
  17. package/dist/src/gateway/cli-copy.en.d.ts +4 -1
  18. package/dist/src/gateway/cli-copy.en.js +6 -3
  19. package/dist/src/gateway/cli-copy.en.js.map +1 -1
  20. package/dist/src/gateway/cli-copy.js +2 -0
  21. package/dist/src/gateway/cli-copy.js.map +1 -1
  22. package/dist/src/gateway/cli-copy.zh-CN.d.ts +4 -1
  23. package/dist/src/gateway/cli-copy.zh-CN.js +6 -3
  24. package/dist/src/gateway/cli-copy.zh-CN.js.map +1 -1
  25. package/dist/src/gateway/cli.d.ts +2 -5
  26. package/dist/src/gateway/cli.js +49 -73
  27. package/dist/src/gateway/cli.js.map +1 -1
  28. package/dist/src/gateway/codex-app-server.d.ts +1 -7
  29. package/dist/src/gateway/codex-app-server.js +10 -53
  30. package/dist/src/gateway/codex-app-server.js.map +1 -1
  31. package/dist/src/gateway/codex-local-transport.d.ts +10 -3
  32. package/dist/src/gateway/codex-local-transport.js +25 -9
  33. package/dist/src/gateway/codex-local-transport.js.map +1 -1
  34. package/dist/src/gateway/compatibility.d.ts +0 -27
  35. package/dist/src/gateway/compatibility.js +1 -101
  36. package/dist/src/gateway/compatibility.js.map +1 -1
  37. package/dist/src/gateway/config.d.ts +0 -3
  38. package/dist/src/gateway/config.js +4 -12
  39. package/dist/src/gateway/config.js.map +1 -1
  40. package/dist/src/gateway/control.d.ts +11 -20
  41. package/dist/src/gateway/control.js +50 -47
  42. package/dist/src/gateway/control.js.map +1 -1
  43. package/dist/src/gateway/dashboard-copy.d.ts +1 -1
  44. package/dist/src/gateway/dashboard-copy.en.d.ts +12 -7
  45. package/dist/src/gateway/dashboard-copy.en.js +26 -21
  46. package/dist/src/gateway/dashboard-copy.en.js.map +1 -1
  47. package/dist/src/gateway/dashboard-copy.js +12 -7
  48. package/dist/src/gateway/dashboard-copy.js.map +1 -1
  49. package/dist/src/gateway/dashboard-copy.zh-CN.d.ts +12 -7
  50. package/dist/src/gateway/dashboard-copy.zh-CN.js +26 -21
  51. package/dist/src/gateway/dashboard-copy.zh-CN.js.map +1 -1
  52. package/dist/src/gateway/dashboard-model.d.ts +7 -9
  53. package/dist/src/gateway/dashboard-model.js +47 -16
  54. package/dist/src/gateway/dashboard-model.js.map +1 -1
  55. package/dist/src/gateway/dashboard.js +10 -10
  56. package/dist/src/gateway/dashboard.js.map +1 -1
  57. package/dist/src/gateway/live-dashboard-app/app.js +65 -55
  58. package/dist/src/gateway/live-dashboard-command.d.ts +5 -1
  59. package/dist/src/gateway/live-dashboard-command.js +18 -6
  60. package/dist/src/gateway/live-dashboard-command.js.map +1 -1
  61. package/dist/src/gateway/live-dashboard-http.d.ts +3 -4
  62. package/dist/src/gateway/live-dashboard-http.js +32 -93
  63. package/dist/src/gateway/live-dashboard-http.js.map +1 -1
  64. package/dist/src/gateway/live-dashboard-protocol.d.ts +1 -5
  65. package/dist/src/gateway/live-dashboard-protocol.js +0 -42
  66. package/dist/src/gateway/live-dashboard-protocol.js.map +1 -1
  67. package/dist/src/gateway/live-dashboard-server.d.ts +2 -2
  68. package/dist/src/gateway/live-dashboard-server.js +18 -4
  69. package/dist/src/gateway/live-dashboard-server.js.map +1 -1
  70. package/dist/src/gateway/live-dashboard-stream.js +26 -25
  71. package/dist/src/gateway/live-dashboard-stream.js.map +1 -1
  72. package/dist/src/gateway/live-dashboard.d.ts +3 -6
  73. package/dist/src/gateway/live-dashboard.js +6 -42
  74. package/dist/src/gateway/live-dashboard.js.map +1 -1
  75. package/dist/src/gateway/provenance-envelope.d.ts +16 -0
  76. package/dist/src/gateway/provenance-envelope.js +80 -0
  77. package/dist/src/gateway/provenance-envelope.js.map +1 -0
  78. package/dist/src/gateway/providers.d.ts +40 -33
  79. package/dist/src/gateway/providers.js +683 -302
  80. package/dist/src/gateway/providers.js.map +1 -1
  81. package/dist/src/gateway/server.d.ts +2 -0
  82. package/dist/src/gateway/server.js +8 -5
  83. package/dist/src/gateway/server.js.map +1 -1
  84. package/dist/src/gateway/service.d.ts +103 -23
  85. package/dist/src/gateway/service.js +1346 -272
  86. package/dist/src/gateway/service.js.map +1 -1
  87. package/dist/src/gateway/store.d.ts +39 -3
  88. package/dist/src/gateway/store.js +604 -44
  89. package/dist/src/gateway/store.js.map +1 -1
  90. package/dist/src/gateway/types.d.ts +90 -9
  91. package/dist/src/gateway/types.js +6 -0
  92. package/dist/src/gateway/types.js.map +1 -1
  93. package/docs/GATEWAY-ARCHITECTURE.md +155 -56
  94. package/package.json +3 -2
  95. package/skills/embassy-peer/SKILL.md +36 -7
  96. package/dist/src/gateway/claude-compatibility-scratch.d.ts +0 -18
  97. package/dist/src/gateway/claude-compatibility-scratch.js +0 -158
  98. package/dist/src/gateway/claude-compatibility-scratch.js.map +0 -1
  99. package/dist/src/gateway/live-dashboard-bootstrap.d.ts +0 -36
  100. package/dist/src/gateway/live-dashboard-bootstrap.js +0 -176
  101. package/dist/src/gateway/live-dashboard-bootstrap.js.map +0 -1
  102. package/docs/DESIGN.md +0 -134
@@ -1,5 +1,3 @@
1
- export declare const compatibilityPolicies: readonly ["observed", "strict"];
2
- export type CompatibilityPolicy = (typeof compatibilityPolicies)[number];
3
1
  export declare const compatibilitySurfaces: readonly ["claude", "codex"];
4
2
  export type CompatibilitySurface = (typeof compatibilitySurfaces)[number];
5
3
  /** Exact upstream builds exercised by this release's deterministic suite. */
@@ -19,14 +17,6 @@ export type CompatibilityProbeResult = Readonly<{
19
17
  outcome: "pass" | "fail";
20
18
  safeErrorCode?: string;
21
19
  }>;
22
- export declare const compatibilityCertificationDepths: readonly ["wire", "thread_ops", "turn"];
23
- export type CompatibilityCertificationDepth = (typeof compatibilityCertificationDepths)[number];
24
- export type CompatibilityCertification = Readonly<{
25
- depth: CompatibilityCertificationDepth;
26
- outcome: "pass" | "fail";
27
- certifiedAt: string;
28
- safeErrorCode?: string;
29
- }>;
30
20
  export type CompatibilityAttestation = Readonly<{
31
21
  schemaVersion: 1;
32
22
  surface: CompatibilitySurface;
@@ -34,37 +24,20 @@ export type CompatibilityAttestation = Readonly<{
34
24
  tier: CompatibilityTier;
35
25
  checkedAt: string;
36
26
  probes: readonly CompatibilityProbeResult[];
37
- certification?: CompatibilityCertification;
38
27
  safeErrorCode?: string;
39
28
  }>;
40
29
  export type CompatibilitySurfaceObservation = Readonly<{
41
30
  surface: CompatibilitySurface;
42
31
  version: string;
43
32
  }>;
44
- export type CompatibilityCheckReport = Readonly<{
45
- policy: CompatibilityPolicy;
46
- compatible: boolean;
47
- surfaces: readonly CompatibilityAttestation[];
48
- }>;
49
- export type CompatibilityCertificationReport = Readonly<{
50
- policy: CompatibilityPolicy;
51
- certified: boolean;
52
- withTurn: boolean;
53
- surfaces: readonly CompatibilityAttestation[];
54
- }>;
55
33
  export declare function isCompatibilityVersion(value: unknown): value is string;
56
34
  export declare function sharesCompatibilityMajor(left: string, right: string): boolean;
57
35
  export declare function evaluateCompatibilityAttestation(input: Readonly<{
58
36
  surface: CompatibilitySurface;
59
37
  version: string;
60
38
  checkedAt: string;
61
- policy: CompatibilityPolicy;
62
39
  certifiedVersions: readonly string[];
63
40
  probes: readonly CompatibilityProbeResult[];
64
41
  }>): CompatibilityAttestation;
65
42
  export declare function isCompatibilityAttestation(value: unknown): value is CompatibilityAttestation;
66
- export declare function isCompatibilityCertification(value: unknown): value is CompatibilityCertification;
67
- export declare function attachCompatibilityCertification(attestation: CompatibilityAttestation, certification: CompatibilityCertification): CompatibilityAttestation;
68
43
  export declare function compatibilityCacheKey(attestation: Pick<CompatibilityAttestation, "surface" | "version">): string;
69
- export declare function isCompatibilityCheckReport(value: unknown): value is CompatibilityCheckReport;
70
- export declare function isCompatibilityCertificationReport(value: unknown): value is CompatibilityCertificationReport;
@@ -1,5 +1,4 @@
1
1
  import { BridgeError } from "../errors.js";
2
- export const compatibilityPolicies = ["observed", "strict"];
3
2
  export const compatibilitySurfaces = ["claude", "codex"];
4
3
  /** Exact upstream builds exercised by this release's deterministic suite. */
5
4
  export const certifiedCompatibilityVersions = Object.freeze({
@@ -26,11 +25,6 @@ export const compatibilityProbeNames = {
26
25
  "thread_list",
27
26
  ],
28
27
  };
29
- export const compatibilityCertificationDepths = [
30
- "wire",
31
- "thread_ops",
32
- "turn",
33
- ];
34
28
  const VERSION_PATTERN = /^[0-9]{1,4}\.[0-9]{1,4}\.[0-9]{1,4}$/;
35
29
  const SAFE_CODE_PATTERN = /^[A-Z][A-Z0-9_]{0,63}$/;
36
30
  function versionDriftCode(surface) {
@@ -72,7 +66,7 @@ export function evaluateCompatibilityAttestation(input) {
72
66
  new Date(observedAt).toISOString() !== input.checkedAt) {
73
67
  throw new BridgeError("COMPAT_TIMESTAMP_INVALID", "Compatibility evidence requires a valid timestamp.");
74
68
  }
75
- const versionMajorNumber = versionMajor(input.version);
69
+ versionMajor(input.version);
76
70
  const certified = new Set(input.certifiedVersions);
77
71
  if (certified.size !== input.certifiedVersions.length ||
78
72
  input.certifiedVersions.length === 0 ||
@@ -82,8 +76,6 @@ export function evaluateCompatibilityAttestation(input) {
82
76
  const normalizedProbes = normalizeProbes(input.surface, input.probes);
83
77
  const failed = normalizedProbes.find((probe) => probe.outcome === "fail");
84
78
  const certifiedVersion = certified.has(input.version);
85
- const certifiedMajors = new Set(input.certifiedVersions.map((version) => versionMajor(version)));
86
- const majorCompatible = certifiedMajors.has(versionMajorNumber);
87
79
  let tier;
88
80
  let safeErrorCode;
89
81
  if (failed !== undefined) {
@@ -93,9 +85,6 @@ export function evaluateCompatibilityAttestation(input) {
93
85
  else if (certifiedVersion) {
94
86
  tier = "certified";
95
87
  }
96
- else if (input.policy === "observed" && majorCompatible) {
97
- tier = "schema_attested";
98
- }
99
88
  else {
100
89
  tier = "incompatible";
101
90
  safeErrorCode = versionDriftCode(input.surface);
@@ -123,7 +112,6 @@ export function isCompatibilityAttestation(value) {
123
112
  "tier",
124
113
  "checkedAt",
125
114
  "probes",
126
- ...(candidate.certification === undefined ? [] : ["certification"]),
127
115
  ...(candidate.safeErrorCode === undefined ? [] : ["safeErrorCode"]),
128
116
  ]);
129
117
  if (keys.length !== expected.size || keys.some((key) => !expected.has(key))) {
@@ -139,8 +127,6 @@ export function isCompatibilityAttestation(value) {
139
127
  new Date(Date.parse(candidate.checkedAt)).toISOString() !==
140
128
  candidate.checkedAt ||
141
129
  !Array.isArray(candidate.probes) ||
142
- (candidate.certification !== undefined &&
143
- !isCompatibilityCertification(candidate.certification)) ||
144
130
  (candidate.safeErrorCode !== undefined &&
145
131
  (typeof candidate.safeErrorCode !== "string" ||
146
132
  !SAFE_CODE_PATTERN.test(candidate.safeErrorCode)))) {
@@ -160,93 +146,7 @@ export function isCompatibilityAttestation(value) {
160
146
  return false;
161
147
  }
162
148
  }
163
- export function isCompatibilityCertification(value) {
164
- if (typeof value !== "object" || value === null || Array.isArray(value)) {
165
- return false;
166
- }
167
- const candidate = value;
168
- const expected = new Set([
169
- "depth",
170
- "outcome",
171
- "certifiedAt",
172
- ...(candidate.safeErrorCode === undefined ? [] : ["safeErrorCode"]),
173
- ]);
174
- const parsedAt = typeof candidate.certifiedAt === "string"
175
- ? Date.parse(candidate.certifiedAt)
176
- : Number.NaN;
177
- return (Object.keys(candidate).length === expected.size &&
178
- Object.keys(candidate).every((key) => expected.has(key)) &&
179
- compatibilityCertificationDepths.includes(candidate.depth) &&
180
- (candidate.outcome === "pass" || candidate.outcome === "fail") &&
181
- Number.isFinite(parsedAt) &&
182
- new Date(parsedAt).toISOString() === candidate.certifiedAt &&
183
- (candidate.safeErrorCode === undefined ||
184
- (typeof candidate.safeErrorCode === "string" &&
185
- SAFE_CODE_PATTERN.test(candidate.safeErrorCode))) &&
186
- (candidate.outcome === "pass") ===
187
- (candidate.safeErrorCode === undefined));
188
- }
189
- export function attachCompatibilityCertification(attestation, certification) {
190
- if (!isCompatibilityAttestation(attestation) ||
191
- !isCompatibilityCertification(certification)) {
192
- throw new BridgeError("COMPAT_CERTIFICATION_INVALID", "Compatibility certification must attach to one compatible attested surface.");
193
- }
194
- return Object.freeze({
195
- ...attestation,
196
- certification: Object.freeze({ ...certification }),
197
- });
198
- }
199
149
  export function compatibilityCacheKey(attestation) {
200
150
  return `${attestation.surface}\0${attestation.version}`;
201
151
  }
202
- export function isCompatibilityCheckReport(value) {
203
- if (typeof value !== "object" || value === null || Array.isArray(value)) {
204
- return false;
205
- }
206
- const candidate = value;
207
- if (Object.keys(candidate).length !== 3 ||
208
- !Object.hasOwn(candidate, "policy") ||
209
- !Object.hasOwn(candidate, "compatible") ||
210
- !Object.hasOwn(candidate, "surfaces") ||
211
- !compatibilityPolicies.includes(candidate.policy) ||
212
- typeof candidate.compatible !== "boolean" ||
213
- !Array.isArray(candidate.surfaces) ||
214
- candidate.surfaces.length !== compatibilitySurfaces.length ||
215
- !candidate.surfaces.every(isCompatibilityAttestation)) {
216
- return false;
217
- }
218
- const surfaces = candidate.surfaces;
219
- return (surfaces.every((attestation, index) => attestation.surface === compatibilitySurfaces[index]) &&
220
- candidate.compatible ===
221
- surfaces.every((attestation) => attestation.tier !== "incompatible"));
222
- }
223
- export function isCompatibilityCertificationReport(value) {
224
- if (typeof value !== "object" || value === null || Array.isArray(value)) {
225
- return false;
226
- }
227
- const candidate = value;
228
- if (Object.keys(candidate).length !== 4 ||
229
- !Object.hasOwn(candidate, "policy") ||
230
- !Object.hasOwn(candidate, "certified") ||
231
- !Object.hasOwn(candidate, "withTurn") ||
232
- !Object.hasOwn(candidate, "surfaces") ||
233
- !compatibilityPolicies.includes(candidate.policy) ||
234
- typeof candidate.certified !== "boolean" ||
235
- typeof candidate.withTurn !== "boolean" ||
236
- !Array.isArray(candidate.surfaces) ||
237
- candidate.surfaces.length !== compatibilitySurfaces.length ||
238
- !candidate.surfaces.every(isCompatibilityAttestation)) {
239
- return false;
240
- }
241
- const surfaces = candidate.surfaces;
242
- return (surfaces.every((attestation, index) => attestation.surface === compatibilitySurfaces[index] &&
243
- attestation.certification !== undefined &&
244
- (attestation.surface === "claude"
245
- ? attestation.certification.depth === "wire"
246
- : candidate.withTurn
247
- ? attestation.certification.depth === "turn"
248
- : attestation.certification.depth === "thread_ops")) &&
249
- candidate.certified ===
250
- surfaces.every((attestation) => attestation.certification?.outcome === "pass"));
251
- }
252
152
  //# sourceMappingURL=compatibility.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"compatibility.js","sourceRoot":"","sources":["../../../src/gateway/compatibility.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"compatibility.js","sourceRoot":"","sources":["../../../src/gateway/compatibility.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,4 @@
1
1
  import { type GatewayInboundMode, type GatewayStoreLimits } from "./types.js";
2
- import { type CompatibilityPolicy } from "./compatibility.js";
3
2
  export declare const gatewayDeliveryNoticeModes: readonly ["merged", "verbose", "quiet"];
4
3
  export type GatewayDeliveryNoticeMode = (typeof gatewayDeliveryNoticeModes)[number];
5
4
  export type GatewayConfig = {
@@ -16,8 +15,6 @@ export type GatewayConfig = {
16
15
  stallNoticeMs: number;
17
16
  /** Native Claude sender notice policy; omitted injected configs mean merged. */
18
17
  deliveryNotices?: GatewayDeliveryNoticeMode;
19
- /** Unknown patch/minor compatibility policy; defaults to bounded observation. */
20
- compatibilityPolicy?: CompatibilityPolicy;
21
18
  limits: GatewayStoreLimits;
22
19
  };
23
20
  export declare function defaultGatewayStateDir(env?: NodeJS.ProcessEnv): string;
@@ -3,7 +3,6 @@ import path from "node:path";
3
3
  import { BridgeError } from "../errors.js";
4
4
  import { gatewayPublicSnapshotLimits, } from "./types.js";
5
5
  import { PROGRESS_WATCH_DEFAULT_CAPACITY, PROGRESS_WATCH_HARD_CAPACITY, } from "./progress-watch-machine.js";
6
- import { compatibilityPolicies, } from "./compatibility.js";
7
6
  export const gatewayDeliveryNoticeModes = [
8
7
  "merged",
9
8
  "verbose",
@@ -62,21 +61,16 @@ function deliveryNoticeMode(value) {
62
61
  }
63
62
  throw new BridgeError("INVALID_GATEWAY_CONFIGURATION", "EMBASSY_DELIVERY_NOTICES must be exactly merged, verbose, or quiet.");
64
63
  }
65
- function compatibilityPolicy(value) {
66
- const candidate = value ?? "observed";
67
- if (compatibilityPolicies.includes(candidate)) {
68
- return candidate;
69
- }
70
- throw new BridgeError("INVALID_GATEWAY_CONFIGURATION", "EMBASSY_COMPAT_POLICY must be exactly observed or strict.");
71
- }
72
64
  export function loadGatewayConfig(env = process.env) {
73
65
  const stateDir = path.resolve(defaultGatewayStateDir(env));
74
66
  const controlSocketPath = path.join(stateDir, "control.sock");
75
67
  if (Buffer.byteLength(controlSocketPath) > 100) {
76
68
  throw new BridgeError("INVALID_GATEWAY_CONFIGURATION", "The gateway state path is too long for a portable private Unix-domain control socket.");
77
69
  }
78
- const messageDeadlineMs = boundedInteger("EMBASSY_MESSAGE_DEADLINE_MS", env.EMBASSY_MESSAGE_DEADLINE_MS, 300_000, 1_000, 3_600_000);
79
- const stallNoticeMs = Math.floor(messageDeadlineMs / 2);
70
+ const messageDeadlineMs = boundedInteger("EMBASSY_MESSAGE_DEADLINE_MS", env.EMBASSY_MESSAGE_DEADLINE_MS, 14_400_000, 1_000, 86_400_000);
71
+ // Stall visibility must not scale with the (now hours-long) deadline: an
72
+ // operator still wants to know within two minutes that a message is waiting.
73
+ const stallNoticeMs = Math.min(Math.floor(messageDeadlineMs / 2), 120_000);
80
74
  const limits = {
81
75
  maxRoutes: boundedInteger("EMBASSY_MAX_ROUTES", env.EMBASSY_MAX_ROUTES, 128, 2, gatewayPublicSnapshotLimits.routes),
82
76
  maxPairs: boundedInteger("EMBASSY_MAX_PAIRS", env.EMBASSY_MAX_PAIRS, 128, 1, gatewayPublicSnapshotLimits.pairs),
@@ -91,7 +85,6 @@ export function loadGatewayConfig(env = process.env) {
91
85
  maxQueueBytes: boundedInteger("EMBASSY_MAX_QUEUE_BYTES", env.EMBASSY_MAX_QUEUE_BYTES, 1_048_576, 1_024, 67_108_864),
92
86
  maxMessageBytes: boundedInteger("EMBASSY_MAX_MESSAGE_BYTES", env.EMBASSY_MAX_MESSAGE_BYTES, 16_384, 1, 1_048_576),
93
87
  messageDeadlineMs,
94
- maxHopCount: boundedInteger("EMBASSY_MAX_HOPS", env.EMBASSY_MAX_HOPS, 2, 0, 16),
95
88
  rateLimitPerRoute: boundedInteger("EMBASSY_RATE_LIMIT", env.EMBASSY_RATE_LIMIT, 30, 1, 10_000),
96
89
  rateWindowMs: boundedInteger("EMBASSY_RATE_WINDOW_MS", env.EMBASSY_RATE_WINDOW_MS, 60_000, 1_000, 3_600_000),
97
90
  };
@@ -123,7 +116,6 @@ export function loadGatewayConfig(env = process.env) {
123
116
  inboundMode: "paired",
124
117
  stallNoticeMs,
125
118
  deliveryNotices: deliveryNoticeMode(env.EMBASSY_DELIVERY_NOTICES),
126
- compatibilityPolicy: compatibilityPolicy(env.EMBASSY_COMPAT_POLICY),
127
119
  limits,
128
120
  };
129
121
  }
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/gateway/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/gateway/config.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,3 @@
1
- import { type CompatibilityCertificationReport, type CompatibilityCheckReport } from "./compatibility.js";
2
1
  import type { GatewayPublicSnapshot } from "./types.js";
3
2
  export declare const GATEWAY_CONTROL_PROTOCOL_VERSION: 1;
4
3
  export declare const GATEWAY_CONTROL_MAX_FRAME_BYTES: number;
@@ -6,7 +5,7 @@ export declare const GATEWAY_CONTROL_MAX_RESPONSE_BYTES: number;
6
5
  export declare const GATEWAY_CONTROL_MAX_MESSAGE_BYTES: number;
7
6
  export declare const GATEWAY_CONTROL_DEFAULT_TIMEOUT_MS = 3000;
8
7
  export declare const GATEWAY_CONTROL_MAX_CONNECTIONS = 32;
9
- export declare const gatewayControlMethods: readonly ["health", "register_codex", "unregister_codex", "select_claude", "unselect_claude", "pair", "unpair", "list_snapshot", "observe_snapshot", "compat_check", "compat_certify", "delivery_status", "untrack", "send_to_claude", "send_to_codex", "reply", "refresh_dashboard"];
8
+ export declare const gatewayControlMethods: readonly ["health", "register_codex", "unregister_codex", "remove_stale_codex_registration", "select_claude", "unselect_claude", "pair", "unpair", "list_snapshot", "observe_snapshot", "delivery_status", "untrack", "send_to_claude", "send_to_codex", "reply", "refresh_dashboard"];
10
9
  export type GatewayControlMethod = (typeof gatewayControlMethods)[number];
11
10
  export type GatewayBusyPolicy = "queue";
12
11
  export type RegisterCodexParams = {
@@ -27,6 +26,10 @@ export type UnregisterCodexParams = {
27
26
  alias: string;
28
27
  threadId: string;
29
28
  };
29
+ /** Bounded operator recovery input; native task and endpoint IDs stay private. */
30
+ export type RemoveStaleCodexRegistrationParams = {
31
+ alias: string;
32
+ };
30
33
  export type SelectClaudeParams = {
31
34
  /** Latest name@host or native Claude session UUID. */
32
35
  alias: string;
@@ -106,6 +109,10 @@ export type GatewayControlRequest = {
106
109
  protocolVersion: 1;
107
110
  method: "unregister_codex";
108
111
  params: UnregisterCodexParams;
112
+ } | {
113
+ protocolVersion: 1;
114
+ method: "remove_stale_codex_registration";
115
+ params: RemoveStaleCodexRegistrationParams;
109
116
  } | {
110
117
  protocolVersion: 1;
111
118
  method: "select_claude";
@@ -130,17 +137,6 @@ export type GatewayControlRequest = {
130
137
  protocolVersion: 1;
131
138
  method: "observe_snapshot";
132
139
  params: Record<string, never>;
133
- } | {
134
- protocolVersion: 1;
135
- method: "compat_check";
136
- params: Record<string, never>;
137
- } | {
138
- protocolVersion: 1;
139
- method: "compat_certify";
140
- params: {
141
- codexAlias?: string;
142
- withTurn: boolean;
143
- };
144
140
  } | {
145
141
  protocolVersion: 1;
146
142
  method: "delivery_status";
@@ -217,14 +213,13 @@ type ResultByMethod = {
217
213
  health: GatewayHealthResult;
218
214
  register_codex: GatewayDecision;
219
215
  unregister_codex: GatewayDecision;
216
+ remove_stale_codex_registration: GatewayDecision;
220
217
  select_claude: GatewayDecision;
221
218
  unselect_claude: GatewayDecision;
222
219
  pair: GatewayDecision;
223
220
  unpair: GatewayDecision;
224
221
  list_snapshot: GatewaySnapshot;
225
222
  observe_snapshot: GatewaySnapshotObservation;
226
- compat_check: CompatibilityCheckReport;
227
- compat_certify: CompatibilityCertificationReport;
228
223
  delivery_status: GatewayDeliveryStatusResult;
229
224
  untrack: GatewayDecision;
230
225
  send_to_claude: GatewaySendResult;
@@ -237,17 +232,13 @@ export type GatewayControlHandlers = {
237
232
  health: () => MaybePromise<GatewayHealthResult>;
238
233
  registerCodex: (params: Readonly<ValidatedRegisterCodexParams>) => MaybePromise<GatewayDecision>;
239
234
  unregisterCodex: (params: Readonly<UnregisterCodexParams>) => MaybePromise<GatewayDecision>;
235
+ removeStaleCodexRegistration: (params: Readonly<RemoveStaleCodexRegistrationParams>) => MaybePromise<GatewayDecision>;
240
236
  selectClaude: (params: Readonly<SelectClaudeParams>) => MaybePromise<GatewayDecision>;
241
237
  unselectClaude: (params: Readonly<SelectClaudeParams>) => MaybePromise<GatewayDecision>;
242
238
  pair: (params: Readonly<PairParams>) => MaybePromise<GatewayDecision>;
243
239
  unpair: (params: Readonly<PairParams>) => MaybePromise<GatewayDecision>;
244
240
  listSnapshot: () => MaybePromise<GatewaySnapshot>;
245
241
  observeSnapshot: () => MaybePromise<GatewaySnapshotObservation>;
246
- compatibilityCheck: () => MaybePromise<CompatibilityCheckReport>;
247
- compatibilityCertify: (params: Readonly<{
248
- codexAlias?: string;
249
- withTurn: boolean;
250
- }>) => MaybePromise<CompatibilityCertificationReport>;
251
242
  deliveryStatus: (params: Readonly<DeliveryStatusParams>) => MaybePromise<GatewayDeliveryStatusResult>;
252
243
  untrack: (params: Readonly<UntrackParams>) => MaybePromise<GatewayDecision>;
253
244
  sendToClaude: (params: Readonly<ValidatedSendToClaudeParams>) => MaybePromise<GatewaySendResult>;
@@ -12,7 +12,7 @@ import { chmod, lstat, mkdtemp, realpath, rename, rmdir, unlink, } from "node:fs
12
12
  import net from "node:net";
13
13
  import path from "node:path";
14
14
  import { TextDecoder } from "node:util";
15
- import { isCompatibilityAttestation, isCompatibilityCertificationReport, isCompatibilityCheckReport, } from "./compatibility.js";
15
+ import { isCompatibilityAttestation } from "./compatibility.js";
16
16
  import { GATEWAY_PUBLIC_SNAPSHOT_BYTE_BUDGET, gatewayPublicSnapshotLimits, } from "./types.js";
17
17
  export const GATEWAY_CONTROL_PROTOCOL_VERSION = 1;
18
18
  export const GATEWAY_CONTROL_MAX_FRAME_BYTES = 32 * 1024;
@@ -40,14 +40,13 @@ export const gatewayControlMethods = [
40
40
  "health",
41
41
  "register_codex",
42
42
  "unregister_codex",
43
+ "remove_stale_codex_registration",
43
44
  "select_claude",
44
45
  "unselect_claude",
45
46
  "pair",
46
47
  "unpair",
47
48
  "list_snapshot",
48
49
  "observe_snapshot",
49
- "compat_check",
50
- "compat_certify",
51
50
  "delivery_status",
52
51
  "untrack",
53
52
  "send_to_claude",
@@ -210,27 +209,11 @@ function normalizeParams(method, value) {
210
209
  case "health":
211
210
  case "list_snapshot":
212
211
  case "observe_snapshot":
213
- case "compat_check":
214
212
  case "refresh_dashboard":
215
213
  if (!hasExactKeys(value, [])) {
216
214
  throw new ProtocolFault("INVALID_REQUEST");
217
215
  }
218
216
  return {};
219
- case "compat_certify": {
220
- if (!hasExactKeys(value, ["withTurn"], ["codexAlias"]) ||
221
- typeof value.withTurn !== "boolean" ||
222
- (value.codexAlias !== undefined &&
223
- (!isAlias(value.codexAlias) ||
224
- !value.codexAlias.startsWith("codex-")))) {
225
- throw new ProtocolFault("INVALID_REQUEST");
226
- }
227
- return {
228
- withTurn: value.withTurn,
229
- ...(value.codexAlias === undefined
230
- ? {}
231
- : { codexAlias: value.codexAlias }),
232
- };
233
- }
234
217
  case "delivery_status": {
235
218
  if (!hasExactKeys(value, ["token"]) ||
236
219
  typeof value.token !== "string" ||
@@ -288,6 +271,14 @@ function normalizeParams(method, value) {
288
271
  threadId: value.threadId.toLowerCase(),
289
272
  };
290
273
  }
274
+ case "remove_stale_codex_registration": {
275
+ if (!hasExactKeys(value, ["alias"]) ||
276
+ !isAlias(value.alias) ||
277
+ !value.alias.startsWith("codex-")) {
278
+ throw new ProtocolFault("INVALID_REQUEST");
279
+ }
280
+ return { alias: value.alias };
281
+ }
291
282
  case "select_claude":
292
283
  case "unselect_claude": {
293
284
  if (!hasExactKeys(value, ["alias"], ["codexThreadId"]) ||
@@ -656,8 +647,7 @@ function isNormalizedMessageEvent(value) {
656
647
  "targetAlias",
657
648
  "state",
658
649
  "bytes",
659
- "hopCount",
660
- ], ["conversationIdSuffix", "latencyMs", "safeErrorCode", "steer"]) &&
650
+ ], ["conversationIdSuffix", "body", "latencyMs", "safeErrorCode", "steer"]) &&
661
651
  isNonNegativeInteger(value.sequence) &&
662
652
  isIsoTimestamp(value.timestamp) &&
663
653
  typeof value.messageIdSuffix === "string" &&
@@ -683,7 +673,11 @@ function isNormalizedMessageEvent(value) {
683
673
  value.state === "abandoned" ||
684
674
  value.state === "rejected") &&
685
675
  isNonNegativeInteger(value.bytes) &&
686
- isNonNegativeInteger(value.hopCount) &&
676
+ (value.body === undefined ||
677
+ (typeof value.body === "string" &&
678
+ value.body.length > 0 &&
679
+ !value.body.includes("\u0000") &&
680
+ Buffer.byteLength(value.body, "utf8") === value.bytes)) &&
687
681
  (value.latencyMs === undefined || isNonNegativeInteger(value.latencyMs)) &&
688
682
  (value.safeErrorCode === undefined || isSafeCode(value.safeErrorCode)) &&
689
683
  (value.steer === undefined || value.steer === true));
@@ -797,26 +791,41 @@ function isGatewayActivityEvent(value) {
797
791
  isNonNegativeInteger(value.sequence) &&
798
792
  value.sequence > 0 &&
799
793
  isIsoTimestamp(value.timestamp) &&
800
- ["discovery", "selection", "registration", "pairing", "watch"].includes(String(value.kind)) &&
801
- [
802
- "discovery_refreshed",
803
- "claude_selected",
804
- "claude_unselected",
805
- "codex_registered",
806
- "codex_succeeded",
807
- "codex_unregistered",
808
- "routes_paired",
809
- "routes_unpaired",
810
- "watch_ended",
811
- ].includes(String(value.action)) &&
794
+ isGatewayActivityIdentity(value.kind, value.action, value.operatorAction) &&
812
795
  (value.outcome === "accepted" || value.outcome === "rejected") &&
813
796
  Array.isArray(value.aliases) &&
814
797
  value.aliases.length <= 2 &&
815
798
  value.aliases.every(isAlias) &&
816
799
  new Set(value.aliases).size === value.aliases.length &&
817
- value.operatorAction === true &&
818
800
  (value.safeErrorCode === undefined || isSafeCode(value.safeErrorCode)));
819
801
  }
802
+ function isGatewayActivityIdentity(kind, action, operatorAction) {
803
+ if (typeof operatorAction !== "boolean")
804
+ return false;
805
+ switch (kind) {
806
+ case "discovery":
807
+ return action === "discovery_refreshed" && operatorAction;
808
+ case "selection":
809
+ return ((action === "claude_selected" || action === "claude_unselected") &&
810
+ operatorAction);
811
+ case "registration":
812
+ return ((action === "codex_registered" ||
813
+ action === "codex_succeeded" ||
814
+ action === "codex_unregistered") &&
815
+ operatorAction);
816
+ case "pairing":
817
+ return ((action === "routes_paired" || action === "routes_unpaired") &&
818
+ operatorAction);
819
+ case "watch":
820
+ return action === "watch_ended" && operatorAction;
821
+ case "endpoint":
822
+ return action === "endpoint_refreshed" && !operatorAction;
823
+ case "recovery":
824
+ return action === "codex_orphan_removed" && operatorAction;
825
+ default:
826
+ return false;
827
+ }
828
+ }
820
829
  function isDeadlinePressure(value) {
821
830
  const names = [
822
831
  "under_1m",
@@ -972,6 +981,7 @@ function isResultForMethod(method, value) {
972
981
  return isHealthResult(value);
973
982
  case "register_codex":
974
983
  case "unregister_codex":
984
+ case "remove_stale_codex_registration":
975
985
  case "select_claude":
976
986
  case "unselect_claude":
977
987
  case "pair":
@@ -981,10 +991,6 @@ function isResultForMethod(method, value) {
981
991
  return isGatewaySnapshot(value);
982
992
  case "observe_snapshot":
983
993
  return isSnapshotObservation(value);
984
- case "compat_check":
985
- return isCompatibilityCheckReport(value);
986
- case "compat_certify":
987
- return isCompatibilityCertificationReport(value);
988
994
  case "delivery_status":
989
995
  return isDeliveryStatusResult(value);
990
996
  case "untrack":
@@ -1017,6 +1023,9 @@ async function dispatch(request, handlers) {
1017
1023
  case "unregister_codex":
1018
1024
  result = await handlers.unregisterCodex(request.params);
1019
1025
  break;
1026
+ case "remove_stale_codex_registration":
1027
+ result = await handlers.removeStaleCodexRegistration(request.params);
1028
+ break;
1020
1029
  case "select_claude":
1021
1030
  result = await handlers.selectClaude(request.params);
1022
1031
  break;
@@ -1035,12 +1044,6 @@ async function dispatch(request, handlers) {
1035
1044
  case "observe_snapshot":
1036
1045
  result = await handlers.observeSnapshot();
1037
1046
  break;
1038
- case "compat_check":
1039
- result = await handlers.compatibilityCheck();
1040
- break;
1041
- case "compat_certify":
1042
- result = await handlers.compatibilityCertify(request.params);
1043
- break;
1044
1047
  case "delivery_status":
1045
1048
  result = await handlers.deliveryStatus(request.params);
1046
1049
  break;
@@ -1158,7 +1161,7 @@ function controlTransportError(code, ambiguous = false) {
1158
1161
  CONTROL_CONNECT_FAILED: "The gateway control socket could not be reached.",
1159
1162
  CONTROL_TIMEOUT: "The gateway control request timed out.",
1160
1163
  CONTROL_RESPONSE_TOO_LARGE: "The gateway control response exceeds the client limit.",
1161
- CONTROL_INVALID_RESPONSE: "The gateway returned an invalid control response.",
1164
+ CONTROL_INVALID_RESPONSE: "The gateway returned an invalid control response. Restart the broker, then retry.",
1162
1165
  CONTROL_CONNECTION_CLOSED: "The gateway closed before returning a control response.",
1163
1166
  CONTROL_OUTCOME_AMBIGUOUS: "The gateway may have applied the control mutation before the response was lost; do not retry automatically.",
1164
1167
  };
@@ -1167,11 +1170,11 @@ function controlTransportError(code, ambiguous = false) {
1167
1170
  function isNonIdempotentControlMethod(method) {
1168
1171
  return (method === "register_codex" ||
1169
1172
  method === "unregister_codex" ||
1173
+ method === "remove_stale_codex_registration" ||
1170
1174
  method === "select_claude" ||
1171
1175
  method === "unselect_claude" ||
1172
1176
  method === "pair" ||
1173
1177
  method === "unpair" ||
1174
- method === "compat_certify" ||
1175
1178
  method === "send_to_claude" ||
1176
1179
  method === "send_to_codex" ||
1177
1180
  method === "reply");