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.
- package/CHANGELOG.md +68 -0
- package/CONTRIBUTING.md +25 -7
- package/README.md +66 -13
- package/README.zh-CN.md +41 -13
- package/SECURITY.md +80 -42
- package/assets/live-dashboard/app.css +14 -5
- package/dist/src/gateway/claude-helper-protocol.d.ts +3 -0
- package/dist/src/gateway/claude-helper-protocol.js +15 -1
- package/dist/src/gateway/claude-helper-protocol.js.map +1 -1
- package/dist/src/gateway/claude-helper-supervisor.d.ts +2 -0
- package/dist/src/gateway/claude-helper-supervisor.js +24 -1
- package/dist/src/gateway/claude-helper-supervisor.js.map +1 -1
- package/dist/src/gateway/claude-runtime.d.ts +0 -2
- package/dist/src/gateway/claude-runtime.js +6 -17
- package/dist/src/gateway/claude-runtime.js.map +1 -1
- package/dist/src/gateway/cli-copy.d.ts +1 -1
- package/dist/src/gateway/cli-copy.en.d.ts +4 -1
- package/dist/src/gateway/cli-copy.en.js +6 -3
- package/dist/src/gateway/cli-copy.en.js.map +1 -1
- package/dist/src/gateway/cli-copy.js +2 -0
- package/dist/src/gateway/cli-copy.js.map +1 -1
- package/dist/src/gateway/cli-copy.zh-CN.d.ts +4 -1
- package/dist/src/gateway/cli-copy.zh-CN.js +6 -3
- package/dist/src/gateway/cli-copy.zh-CN.js.map +1 -1
- package/dist/src/gateway/cli.d.ts +2 -5
- package/dist/src/gateway/cli.js +49 -73
- package/dist/src/gateway/cli.js.map +1 -1
- package/dist/src/gateway/codex-app-server.d.ts +1 -7
- package/dist/src/gateway/codex-app-server.js +10 -53
- package/dist/src/gateway/codex-app-server.js.map +1 -1
- package/dist/src/gateway/codex-local-transport.d.ts +10 -3
- package/dist/src/gateway/codex-local-transport.js +25 -9
- package/dist/src/gateway/codex-local-transport.js.map +1 -1
- package/dist/src/gateway/compatibility.d.ts +0 -27
- package/dist/src/gateway/compatibility.js +1 -101
- package/dist/src/gateway/compatibility.js.map +1 -1
- package/dist/src/gateway/config.d.ts +0 -3
- package/dist/src/gateway/config.js +4 -12
- package/dist/src/gateway/config.js.map +1 -1
- package/dist/src/gateway/control.d.ts +11 -20
- package/dist/src/gateway/control.js +50 -47
- package/dist/src/gateway/control.js.map +1 -1
- package/dist/src/gateway/dashboard-copy.d.ts +1 -1
- package/dist/src/gateway/dashboard-copy.en.d.ts +12 -7
- package/dist/src/gateway/dashboard-copy.en.js +26 -21
- package/dist/src/gateway/dashboard-copy.en.js.map +1 -1
- package/dist/src/gateway/dashboard-copy.js +12 -7
- package/dist/src/gateway/dashboard-copy.js.map +1 -1
- package/dist/src/gateway/dashboard-copy.zh-CN.d.ts +12 -7
- package/dist/src/gateway/dashboard-copy.zh-CN.js +26 -21
- package/dist/src/gateway/dashboard-copy.zh-CN.js.map +1 -1
- package/dist/src/gateway/dashboard-model.d.ts +7 -9
- package/dist/src/gateway/dashboard-model.js +47 -16
- package/dist/src/gateway/dashboard-model.js.map +1 -1
- package/dist/src/gateway/dashboard.js +10 -10
- package/dist/src/gateway/dashboard.js.map +1 -1
- package/dist/src/gateway/live-dashboard-app/app.js +65 -55
- package/dist/src/gateway/live-dashboard-command.d.ts +5 -1
- package/dist/src/gateway/live-dashboard-command.js +18 -6
- package/dist/src/gateway/live-dashboard-command.js.map +1 -1
- package/dist/src/gateway/live-dashboard-http.d.ts +3 -4
- package/dist/src/gateway/live-dashboard-http.js +32 -93
- package/dist/src/gateway/live-dashboard-http.js.map +1 -1
- package/dist/src/gateway/live-dashboard-protocol.d.ts +1 -5
- package/dist/src/gateway/live-dashboard-protocol.js +0 -42
- package/dist/src/gateway/live-dashboard-protocol.js.map +1 -1
- package/dist/src/gateway/live-dashboard-server.d.ts +2 -2
- package/dist/src/gateway/live-dashboard-server.js +18 -4
- package/dist/src/gateway/live-dashboard-server.js.map +1 -1
- package/dist/src/gateway/live-dashboard-stream.js +26 -25
- package/dist/src/gateway/live-dashboard-stream.js.map +1 -1
- package/dist/src/gateway/live-dashboard.d.ts +3 -6
- package/dist/src/gateway/live-dashboard.js +6 -42
- package/dist/src/gateway/live-dashboard.js.map +1 -1
- package/dist/src/gateway/provenance-envelope.d.ts +16 -0
- package/dist/src/gateway/provenance-envelope.js +80 -0
- package/dist/src/gateway/provenance-envelope.js.map +1 -0
- package/dist/src/gateway/providers.d.ts +40 -33
- package/dist/src/gateway/providers.js +683 -302
- package/dist/src/gateway/providers.js.map +1 -1
- package/dist/src/gateway/server.d.ts +2 -0
- package/dist/src/gateway/server.js +8 -5
- package/dist/src/gateway/server.js.map +1 -1
- package/dist/src/gateway/service.d.ts +103 -23
- package/dist/src/gateway/service.js +1346 -272
- package/dist/src/gateway/service.js.map +1 -1
- package/dist/src/gateway/store.d.ts +39 -3
- package/dist/src/gateway/store.js +604 -44
- package/dist/src/gateway/store.js.map +1 -1
- package/dist/src/gateway/types.d.ts +90 -9
- package/dist/src/gateway/types.js +6 -0
- package/dist/src/gateway/types.js.map +1 -1
- package/docs/GATEWAY-ARCHITECTURE.md +155 -56
- package/package.json +3 -2
- package/skills/embassy-peer/SKILL.md +36 -7
- package/dist/src/gateway/claude-compatibility-scratch.d.ts +0 -18
- package/dist/src/gateway/claude-compatibility-scratch.js +0 -158
- package/dist/src/gateway/claude-compatibility-scratch.js.map +0 -1
- package/dist/src/gateway/live-dashboard-bootstrap.d.ts +0 -36
- package/dist/src/gateway/live-dashboard-bootstrap.js +0 -176
- package/dist/src/gateway/live-dashboard-bootstrap.js.map +0 -1
- 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
|
-
|
|
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,
|
|
79
|
-
|
|
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":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EACL,2BAA2B,GAG5B,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,+BAA+B,EAC/B,4BAA4B,GAC7B,MAAM,6BAA6B,CAAC;
|
|
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", "
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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");
|