@embassys/ambassador 0.0.0 → 0.2.7
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/LICENSE +21 -0
- package/README.md +69 -2
- package/dist/agent-capabilities.d.ts +35 -0
- package/dist/agent-capabilities.js +221 -0
- package/dist/agent-capabilities.js.map +1 -0
- package/dist/ambassador-options.d.ts +6 -0
- package/dist/ambassador-options.js +13 -0
- package/dist/ambassador-options.js.map +1 -0
- package/dist/central-credential.d.ts +41 -0
- package/dist/central-credential.js +355 -0
- package/dist/central-credential.js.map +1 -0
- package/dist/central-enrollment.d.ts +31 -0
- package/dist/central-enrollment.js +278 -0
- package/dist/central-enrollment.js.map +1 -0
- package/dist/central-json.d.ts +8 -0
- package/dist/central-json.js +259 -0
- package/dist/central-json.js.map +1 -0
- package/dist/central-protected-transport.d.ts +21 -0
- package/dist/central-protected-transport.js +217 -0
- package/dist/central-protected-transport.js.map +1 -0
- package/dist/central-rest.d.ts +50 -0
- package/dist/central-rest.js +401 -0
- package/dist/central-rest.js.map +1 -0
- package/dist/cli.d.ts +26 -0
- package/dist/cli.js +129 -0
- package/dist/cli.js.map +1 -0
- package/dist/credential-store.d.ts +18 -0
- package/dist/credential-store.js +617 -0
- package/dist/credential-store.js.map +1 -0
- package/dist/delivery-profile.d.ts +43 -0
- package/dist/delivery-profile.js +253 -0
- package/dist/delivery-profile.js.map +1 -0
- package/dist/direct-delivery.d.ts +37 -0
- package/dist/direct-delivery.js +312 -0
- package/dist/direct-delivery.js.map +1 -0
- package/dist/dpop.d.ts +28 -0
- package/dist/dpop.js +119 -0
- package/dist/dpop.js.map +1 -0
- package/dist/errors.d.ts +5 -0
- package/dist/errors.js +11 -0
- package/dist/errors.js.map +1 -0
- package/dist/gateway-application.d.ts +32 -0
- package/dist/gateway-application.js +255 -0
- package/dist/gateway-application.js.map +1 -0
- package/dist/gateway-paths.d.ts +11 -0
- package/dist/gateway-paths.js +29 -0
- package/dist/gateway-paths.js.map +1 -0
- package/dist/guided-registration.d.ts +23 -0
- package/dist/guided-registration.js +117 -0
- package/dist/guided-registration.js.map +1 -0
- package/dist/identity.d.ts +20 -0
- package/dist/identity.js +54 -0
- package/dist/identity.js.map +1 -0
- package/dist/local-mcp.d.ts +28 -0
- package/dist/local-mcp.js +410 -0
- package/dist/local-mcp.js.map +1 -0
- package/dist/local-tool-result.d.ts +4 -0
- package/dist/local-tool-result.js +17 -0
- package/dist/local-tool-result.js.map +1 -0
- package/dist/mcp-contract.d.ts +10 -0
- package/dist/mcp-contract.js +63 -0
- package/dist/mcp-contract.js.map +1 -0
- package/dist/notification-journal.d.ts +24 -0
- package/dist/notification-journal.js +194 -0
- package/dist/notification-journal.js.map +1 -0
- package/dist/notification-relay.d.ts +31 -0
- package/dist/notification-relay.js +203 -0
- package/dist/notification-relay.js.map +1 -0
- package/dist/process-lock.d.ts +8 -0
- package/dist/process-lock.js +122 -0
- package/dist/process-lock.js.map +1 -0
- package/dist/sqlite-artifact.d.ts +7 -0
- package/dist/sqlite-artifact.js +121 -0
- package/dist/sqlite-artifact.js.map +1 -0
- package/dist/webhook-delivery.d.ts +23 -0
- package/dist/webhook-delivery.js +122 -0
- package/dist/webhook-delivery.js.map +1 -0
- package/docs/getting-started-claude.md +33 -0
- package/docs/getting-started-codex.md +36 -0
- package/docs/getting-started-gemini.md +31 -0
- package/docs/getting-started-hermes.md +47 -0
- package/docs/getting-started-openclaw.md +48 -0
- package/docs/live-qualification.md +174 -0
- package/package.json +48 -7
- package/index.js +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"direct-delivery.js","sourceRoot":"","sources":["../src/direct-delivery.ts"],"names":[],"mappings":"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"}
|
package/dist/dpop.d.ts
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { type KeyObject } from "node:crypto";
|
|
2
|
+
import { type CentralKeyMaterial, type CentralPublicJwk } from "./central-credential.js";
|
|
3
|
+
export interface DpopKeyMaterial extends CentralKeyMaterial {
|
|
4
|
+
}
|
|
5
|
+
export interface DpopProofInput {
|
|
6
|
+
readonly method: string;
|
|
7
|
+
readonly targetUri: string;
|
|
8
|
+
readonly privateKey: KeyObject;
|
|
9
|
+
readonly publicJwk: CentralPublicJwk;
|
|
10
|
+
readonly accessToken: string;
|
|
11
|
+
readonly nonce?: string;
|
|
12
|
+
readonly now?: () => number;
|
|
13
|
+
readonly uuid?: () => string;
|
|
14
|
+
}
|
|
15
|
+
export declare class DpopError extends Error {
|
|
16
|
+
constructor();
|
|
17
|
+
}
|
|
18
|
+
export declare function dpopJwkThumbprint(jwk: CentralPublicJwk): string;
|
|
19
|
+
export declare function dpopAccessTokenHash(accessToken: string): string;
|
|
20
|
+
export declare function generateDpopKeyMaterial(): DpopKeyMaterial;
|
|
21
|
+
export declare function createDpopProof(input: DpopProofInput): string;
|
|
22
|
+
export declare function parseDpopNonce(value: string | null | undefined): string | undefined;
|
|
23
|
+
export declare class DpopNonceCache {
|
|
24
|
+
#private;
|
|
25
|
+
get(origin: string): string | undefined;
|
|
26
|
+
set(origin: string, value: string): void;
|
|
27
|
+
clear(): void;
|
|
28
|
+
}
|
package/dist/dpop.js
ADDED
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
import { createHash, createPublicKey, generateKeyPairSync, randomUUID, sign, } from "node:crypto";
|
|
2
|
+
import { centralJwkThumbprint, exactCentralPublicJwk, } from "./central-credential.js";
|
|
3
|
+
const TOKEN = /^[\x21-\x7e]{1,4096}$/u;
|
|
4
|
+
const METHOD = /^[A-Z]+$/u;
|
|
5
|
+
const UUID_V4 = /^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/u;
|
|
6
|
+
const NONCE = /^[A-Za-z0-9._~-]{1,512}$/u;
|
|
7
|
+
const PROOF_MAX_BYTES = 4_096;
|
|
8
|
+
export class DpopError extends Error {
|
|
9
|
+
constructor() {
|
|
10
|
+
super("The DPoP operation is invalid");
|
|
11
|
+
this.name = "DpopError";
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
function invalid() {
|
|
15
|
+
throw new DpopError();
|
|
16
|
+
}
|
|
17
|
+
function encodedJson(value) {
|
|
18
|
+
return Buffer.from(JSON.stringify(value), "utf8").toString("base64url");
|
|
19
|
+
}
|
|
20
|
+
function exactTarget(value) {
|
|
21
|
+
let target;
|
|
22
|
+
try {
|
|
23
|
+
target = new URL(value);
|
|
24
|
+
}
|
|
25
|
+
catch {
|
|
26
|
+
return invalid();
|
|
27
|
+
}
|
|
28
|
+
if ((target.protocol !== "https:" && target.protocol !== "http:") ||
|
|
29
|
+
target.username !== "" ||
|
|
30
|
+
target.password !== "" ||
|
|
31
|
+
target.hash !== "") {
|
|
32
|
+
invalid();
|
|
33
|
+
}
|
|
34
|
+
return target.href;
|
|
35
|
+
}
|
|
36
|
+
export function dpopJwkThumbprint(jwk) {
|
|
37
|
+
return centralJwkThumbprint(jwk);
|
|
38
|
+
}
|
|
39
|
+
export function dpopAccessTokenHash(accessToken) {
|
|
40
|
+
if (!TOKEN.test(accessToken))
|
|
41
|
+
invalid();
|
|
42
|
+
return createHash("sha256").update(accessToken, "ascii").digest("base64url");
|
|
43
|
+
}
|
|
44
|
+
export function generateDpopKeyMaterial() {
|
|
45
|
+
const pair = generateKeyPairSync("ec", { namedCurve: "prime256v1" });
|
|
46
|
+
const publicJwk = exactCentralPublicJwk(pair.publicKey.export({ format: "jwk" }));
|
|
47
|
+
const privateKeyPkcs8 = Buffer.from(pair.privateKey.export({ format: "der", type: "pkcs8" })).toString("base64url");
|
|
48
|
+
if (privateKeyPkcs8.length > 1_024)
|
|
49
|
+
invalid();
|
|
50
|
+
return {
|
|
51
|
+
privateKey: pair.privateKey,
|
|
52
|
+
privateKeyPkcs8,
|
|
53
|
+
publicJwk,
|
|
54
|
+
thumbprint: dpopJwkThumbprint(publicJwk),
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
export function createDpopProof(input) {
|
|
58
|
+
if (!METHOD.test(input.method) || !TOKEN.test(input.accessToken))
|
|
59
|
+
invalid();
|
|
60
|
+
if (input.privateKey.asymmetricKeyType !== "ec" ||
|
|
61
|
+
input.privateKey.asymmetricKeyDetails?.namedCurve !== "prime256v1") {
|
|
62
|
+
invalid();
|
|
63
|
+
}
|
|
64
|
+
const suppliedPublic = exactCentralPublicJwk(input.publicJwk);
|
|
65
|
+
const actualPublic = exactCentralPublicJwk(createPublicKey(input.privateKey).export({ format: "jwk" }));
|
|
66
|
+
if (dpopJwkThumbprint(suppliedPublic) !== dpopJwkThumbprint(actualPublic))
|
|
67
|
+
invalid();
|
|
68
|
+
const jti = (input.uuid ?? randomUUID)();
|
|
69
|
+
if (!UUID_V4.test(jti))
|
|
70
|
+
invalid();
|
|
71
|
+
const iat = Math.floor((input.now ?? (() => Date.now() / 1_000))());
|
|
72
|
+
if (!Number.isSafeInteger(iat) || iat < 0)
|
|
73
|
+
invalid();
|
|
74
|
+
const nonce = input.nonce === undefined ? undefined : parseDpopNonce(input.nonce);
|
|
75
|
+
const header = {
|
|
76
|
+
typ: "dpop+jwt",
|
|
77
|
+
alg: "ES256",
|
|
78
|
+
jwk: actualPublic,
|
|
79
|
+
};
|
|
80
|
+
const payload = {
|
|
81
|
+
jti,
|
|
82
|
+
htm: input.method,
|
|
83
|
+
htu: exactTarget(input.targetUri),
|
|
84
|
+
iat,
|
|
85
|
+
ath: dpopAccessTokenHash(input.accessToken),
|
|
86
|
+
...(nonce === undefined ? {} : { nonce }),
|
|
87
|
+
};
|
|
88
|
+
const encodedHeader = encodedJson(header);
|
|
89
|
+
const encodedPayload = encodedJson(payload);
|
|
90
|
+
const signingInput = `${encodedHeader}.${encodedPayload}`;
|
|
91
|
+
const signature = sign("sha256", Buffer.from(signingInput, "ascii"), {
|
|
92
|
+
key: input.privateKey,
|
|
93
|
+
dsaEncoding: "ieee-p1363",
|
|
94
|
+
}).toString("base64url");
|
|
95
|
+
const proof = `${signingInput}.${signature}`;
|
|
96
|
+
if (Buffer.byteLength(proof, "ascii") > PROOF_MAX_BYTES)
|
|
97
|
+
invalid();
|
|
98
|
+
return proof;
|
|
99
|
+
}
|
|
100
|
+
export function parseDpopNonce(value) {
|
|
101
|
+
if (value === null || value === undefined)
|
|
102
|
+
return undefined;
|
|
103
|
+
if (!NONCE.test(value))
|
|
104
|
+
invalid();
|
|
105
|
+
return value;
|
|
106
|
+
}
|
|
107
|
+
export class DpopNonceCache {
|
|
108
|
+
#values = new Map();
|
|
109
|
+
get(origin) {
|
|
110
|
+
return this.#values.get(origin);
|
|
111
|
+
}
|
|
112
|
+
set(origin, value) {
|
|
113
|
+
this.#values.set(origin, parseDpopNonce(value));
|
|
114
|
+
}
|
|
115
|
+
clear() {
|
|
116
|
+
this.#values.clear();
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
//# sourceMappingURL=dpop.js.map
|
package/dist/dpop.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dpop.js","sourceRoot":"","sources":["../src/dpop.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EACV,eAAe,EACf,mBAAmB,EAEnB,UAAU,EACV,IAAI,GACL,MAAM,aAAa,CAAC;AAErB,OAAO,EAGL,oBAAoB,EACpB,qBAAqB,GACtB,MAAM,yBAAyB,CAAC;AAEjC,MAAM,KAAK,GAAG,wBAAwB,CAAC;AACvC,MAAM,MAAM,GAAG,WAAW,CAAC;AAC3B,MAAM,OAAO,GAAG,wEAAwE,CAAC;AACzF,MAAM,KAAK,GAAG,2BAA2B,CAAC;AAC1C,MAAM,eAAe,GAAG,KAAK,CAAC;AAe9B,MAAM,OAAO,SAAU,SAAQ,KAAK;IAClC;QACE,KAAK,CAAC,+BAA+B,CAAC,CAAC;QACvC,IAAI,CAAC,IAAI,GAAG,WAAW,CAAC;IAC1B,CAAC;CACF;AAED,SAAS,OAAO;IACd,MAAM,IAAI,SAAS,EAAE,CAAC;AACxB,CAAC;AAED,SAAS,WAAW,CAAC,KAAc;IACjC,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;AAC1E,CAAC;AAED,SAAS,WAAW,CAAC,KAAa;IAChC,IAAI,MAAW,CAAC;IAChB,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC;IAC1B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,OAAO,EAAE,CAAC;IACnB,CAAC;IACD,IACE,CAAC,MAAM,CAAC,QAAQ,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,KAAK,OAAO,CAAC;QAC7D,MAAM,CAAC,QAAQ,KAAK,EAAE;QACtB,MAAM,CAAC,QAAQ,KAAK,EAAE;QACtB,MAAM,CAAC,IAAI,KAAK,EAAE,EAClB,CAAC;QACD,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,OAAO,MAAM,CAAC,IAAI,CAAC;AACrB,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,GAAqB;IACrD,OAAO,oBAAoB,CAAC,GAAG,CAAC,CAAC;AACnC,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,WAAmB;IACrD,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC;QAAE,OAAO,EAAE,CAAC;IACxC,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;AAC/E,CAAC;AAED,MAAM,UAAU,uBAAuB;IACrC,MAAM,IAAI,GAAG,mBAAmB,CAAC,IAAI,EAAE,EAAE,UAAU,EAAE,YAAY,EAAE,CAAC,CAAC;IACrE,MAAM,SAAS,GAAG,qBAAqB,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;IAClF,MAAM,eAAe,GAAG,MAAM,CAAC,IAAI,CACjC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CACzD,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;IACxB,IAAI,eAAe,CAAC,MAAM,GAAG,KAAK;QAAE,OAAO,EAAE,CAAC;IAC9C,OAAO;QACL,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,eAAe;QACf,SAAS;QACT,UAAU,EAAE,iBAAiB,CAAC,SAAS,CAAC;KACzC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,KAAqB;IACnD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC;QAAE,OAAO,EAAE,CAAC;IAC5E,IACE,KAAK,CAAC,UAAU,CAAC,iBAAiB,KAAK,IAAI;QAC3C,KAAK,CAAC,UAAU,CAAC,oBAAoB,EAAE,UAAU,KAAK,YAAY,EAClE,CAAC;QACD,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,MAAM,cAAc,GAAG,qBAAqB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IAC9D,MAAM,YAAY,GAAG,qBAAqB,CACxC,eAAe,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAC5D,CAAC;IACF,IAAI,iBAAiB,CAAC,cAAc,CAAC,KAAK,iBAAiB,CAAC,YAAY,CAAC;QAAE,OAAO,EAAE,CAAC;IACrF,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,IAAI,UAAU,CAAC,EAAE,CAAC;IACzC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;QAAE,OAAO,EAAE,CAAC;IAClC,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;IACpE,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC;QAAE,OAAO,EAAE,CAAC;IACrD,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,cAAc,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAClF,MAAM,MAAM,GAAG;QACb,GAAG,EAAE,UAAU;QACf,GAAG,EAAE,OAAO;QACZ,GAAG,EAAE,YAAY;KACT,CAAC;IACX,MAAM,OAAO,GAAG;QACd,GAAG;QACH,GAAG,EAAE,KAAK,CAAC,MAAM;QACjB,GAAG,EAAE,WAAW,CAAC,KAAK,CAAC,SAAS,CAAC;QACjC,GAAG;QACH,GAAG,EAAE,mBAAmB,CAAC,KAAK,CAAC,WAAW,CAAC;QAC3C,GAAG,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC;KAC1C,CAAC;IACF,MAAM,aAAa,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;IAC1C,MAAM,cAAc,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;IAC5C,MAAM,YAAY,GAAG,GAAG,aAAa,IAAI,cAAc,EAAE,CAAC;IAC1D,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,YAAY,EAAE,OAAO,CAAC,EAAE;QACnE,GAAG,EAAE,KAAK,CAAC,UAAU;QACrB,WAAW,EAAE,YAAY;KAC1B,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;IACzB,MAAM,KAAK,GAAG,GAAG,YAAY,IAAI,SAAS,EAAE,CAAC;IAC7C,IAAI,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,OAAO,CAAC,GAAG,eAAe;QAAE,OAAO,EAAE,CAAC;IACnE,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,KAAgC;IAC7D,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC5D,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAClC,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,OAAO,cAAc;IAChB,OAAO,GAAG,IAAI,GAAG,EAAkB,CAAC;IAE7C,GAAG,CAAC,MAAc;QAChB,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAClC,CAAC;IAED,GAAG,CAAC,MAAc,EAAE,KAAa;QAC/B,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,KAAK,CAAW,CAAC,CAAC;IAC5D,CAAC;IAED,KAAK;QACH,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;IACvB,CAAC;CACF"}
|
package/dist/errors.d.ts
ADDED
package/dist/errors.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,YAAa,SAAQ,KAAK;IAE1B,IAAI;IAEJ,QAAQ;IAHnB,YACW,IAAY,EACrB,OAAe,EACN,QAAgB;QAEzB,KAAK,CAAC,OAAO,CAAC,CAAC;oBAJN,IAAI;wBAEJ,QAAQ;QAGjB,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC;IAC7B,CAAC;CACF"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import type { AgentCapability } from "./agent-capabilities.js";
|
|
2
|
+
import { type CredentialStore } from "./credential-store.js";
|
|
3
|
+
import { type DeliveryProfile } from "./delivery-profile.js";
|
|
4
|
+
import { type DeliveryTarget } from "./notification-relay.js";
|
|
5
|
+
export declare const CENTRAL_ORIGIN = "https://mcp.embassys.ai";
|
|
6
|
+
export interface DeliveryTargetContext {
|
|
7
|
+
readonly profile: DeliveryProfile;
|
|
8
|
+
readonly capability: AgentCapability;
|
|
9
|
+
readonly endpoint: string;
|
|
10
|
+
}
|
|
11
|
+
export interface GatewayApplicationOptions {
|
|
12
|
+
readonly journalPath: string;
|
|
13
|
+
readonly credentialPath: string;
|
|
14
|
+
readonly credentialKeyPath: string;
|
|
15
|
+
readonly profilePath: string;
|
|
16
|
+
readonly workingDirectory: string;
|
|
17
|
+
readonly environment: NodeJS.ProcessEnv;
|
|
18
|
+
readonly centralOrigin?: string;
|
|
19
|
+
readonly centralFetch?: typeof fetch;
|
|
20
|
+
readonly webhookFetch?: typeof fetch;
|
|
21
|
+
readonly credentialStore?: CredentialStore;
|
|
22
|
+
readonly deliveryTargetFactory?: (context: DeliveryTargetContext) => DeliveryTarget;
|
|
23
|
+
readonly localMcpPort?: number;
|
|
24
|
+
readonly nowSeconds?: () => number;
|
|
25
|
+
readonly signal?: AbortSignal;
|
|
26
|
+
}
|
|
27
|
+
export interface RunningGatewayApplication {
|
|
28
|
+
readonly endpoint: string;
|
|
29
|
+
readonly failure: Promise<Error>;
|
|
30
|
+
close(): Promise<void>;
|
|
31
|
+
}
|
|
32
|
+
export declare function openGatewayApplication(options: GatewayApplicationOptions): Promise<RunningGatewayApplication>;
|
|
@@ -0,0 +1,255 @@
|
|
|
1
|
+
import { CentralEnrollmentClient, CentralEnrollmentError, REST_BOOTSTRAP_TOOLS, } from "./central-enrollment.js";
|
|
2
|
+
import { CentralProtectedTransport } from "./central-protected-transport.js";
|
|
3
|
+
import { CentralRestClient, CentralRestError, REST_AUTHENTICATED_TOOLS } from "./central-rest.js";
|
|
4
|
+
import { EncryptedFileCredentialStore } from "./credential-store.js";
|
|
5
|
+
import { DeliveryProfileError, DeliveryProfileStore, resolveWebhookSecret, validateStoredDeliveryProfile, } from "./delivery-profile.js";
|
|
6
|
+
import { DirectDeliveryTarget } from "./direct-delivery.js";
|
|
7
|
+
import { DpopNonceCache } from "./dpop.js";
|
|
8
|
+
import { GuidedRegistration, GuidedRegistrationError } from "./guided-registration.js";
|
|
9
|
+
import { GatewayIdentity, IdentityError } from "./identity.js";
|
|
10
|
+
import { LocalMcpServer, LocalMcpToolError } from "./local-mcp.js";
|
|
11
|
+
import { assertSafeUpstreamResult, McpContractError, safeLocalToolArguments, } from "./mcp-contract.js";
|
|
12
|
+
import { NotificationJournal } from "./notification-journal.js";
|
|
13
|
+
import { NotificationRelay, NotificationRelayError, RetryableNotificationReceiveError, } from "./notification-relay.js";
|
|
14
|
+
import { WebhookDeliveryTarget } from "./webhook-delivery.js";
|
|
15
|
+
export const CENTRAL_ORIGIN = "https://mcp.embassys.ai";
|
|
16
|
+
const CENTRAL_POLL_SECONDS = 30;
|
|
17
|
+
function safeFailure() {
|
|
18
|
+
return new Error("Ambassador operation failed");
|
|
19
|
+
}
|
|
20
|
+
function localError(error) {
|
|
21
|
+
if (error instanceof LocalMcpToolError)
|
|
22
|
+
return error;
|
|
23
|
+
if (error instanceof IdentityError)
|
|
24
|
+
return new LocalMcpToolError(error.code);
|
|
25
|
+
if (error instanceof CentralEnrollmentError)
|
|
26
|
+
return new LocalMcpToolError(error.code);
|
|
27
|
+
if (error instanceof CentralRestError)
|
|
28
|
+
return new LocalMcpToolError(error.code);
|
|
29
|
+
if (error instanceof GuidedRegistrationError)
|
|
30
|
+
return new LocalMcpToolError(error.code);
|
|
31
|
+
if (error instanceof DeliveryProfileError)
|
|
32
|
+
return new LocalMcpToolError(error.code);
|
|
33
|
+
if (error instanceof McpContractError)
|
|
34
|
+
return new LocalMcpToolError("invalid_arguments");
|
|
35
|
+
if (error instanceof NotificationRelayError)
|
|
36
|
+
return new LocalMcpToolError(error.code);
|
|
37
|
+
return new LocalMcpToolError("ambassador_operation_failed");
|
|
38
|
+
}
|
|
39
|
+
export async function openGatewayApplication(options) {
|
|
40
|
+
const centralOrigin = options.centralOrigin ?? CENTRAL_ORIGIN;
|
|
41
|
+
const nowSeconds = options.nowSeconds ?? (() => Date.now() / 1_000);
|
|
42
|
+
const journal = new NotificationJournal(options.journalPath);
|
|
43
|
+
const profileStore = new DeliveryProfileStore(options.profilePath);
|
|
44
|
+
const store = options.credentialStore ??
|
|
45
|
+
new EncryptedFileCredentialStore(options.credentialPath, options.credentialKeyPath, JSON.stringify({ centralOrigin: new URL(centralOrigin).origin }));
|
|
46
|
+
const controller = new AbortController();
|
|
47
|
+
const lifetimeSignal = options.signal === undefined
|
|
48
|
+
? controller.signal
|
|
49
|
+
: AbortSignal.any([controller.signal, options.signal]);
|
|
50
|
+
let identity;
|
|
51
|
+
let local;
|
|
52
|
+
let rest;
|
|
53
|
+
let relay;
|
|
54
|
+
let relayRun;
|
|
55
|
+
let closed = false;
|
|
56
|
+
let activation;
|
|
57
|
+
let reportFailure;
|
|
58
|
+
const failure = new Promise((resolve) => {
|
|
59
|
+
reportFailure = resolve;
|
|
60
|
+
});
|
|
61
|
+
const enrollment = new CentralEnrollmentClient({
|
|
62
|
+
centralOrigin,
|
|
63
|
+
...(options.centralFetch === undefined ? {} : { fetch: options.centralFetch }),
|
|
64
|
+
nowSeconds,
|
|
65
|
+
});
|
|
66
|
+
const guidedRegistration = new GuidedRegistration({
|
|
67
|
+
profileStore,
|
|
68
|
+
workingDirectory: options.workingDirectory,
|
|
69
|
+
environment: options.environment,
|
|
70
|
+
registerCentral: (arguments_, signal) => enrollment.register(arguments_, signal),
|
|
71
|
+
});
|
|
72
|
+
const loadProfile = async () => {
|
|
73
|
+
const profile = await profileStore.load();
|
|
74
|
+
if (profile === undefined)
|
|
75
|
+
throw new DeliveryProfileError("invalid_profile");
|
|
76
|
+
const validated = await validateStoredDeliveryProfile(profile, options.workingDirectory);
|
|
77
|
+
if (validated.profile.mode === "webhook") {
|
|
78
|
+
resolveWebhookSecret(options.environment, validated.profile.secret_env);
|
|
79
|
+
}
|
|
80
|
+
return validated;
|
|
81
|
+
};
|
|
82
|
+
const createDeliveryTarget = (context) => {
|
|
83
|
+
if (options.deliveryTargetFactory !== undefined) {
|
|
84
|
+
return options.deliveryTargetFactory(context);
|
|
85
|
+
}
|
|
86
|
+
if (context.profile.mode === "webhook") {
|
|
87
|
+
return new WebhookDeliveryTarget({
|
|
88
|
+
url: context.profile.url,
|
|
89
|
+
secret: resolveWebhookSecret(options.environment, context.profile.secret_env),
|
|
90
|
+
now: () => nowSeconds() * 1_000,
|
|
91
|
+
...(options.webhookFetch === undefined ? {} : { fetch: options.webhookFetch }),
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
if (context.capability.direct === undefined) {
|
|
95
|
+
throw new DeliveryProfileError("incompatible_profile");
|
|
96
|
+
}
|
|
97
|
+
return new DirectDeliveryTarget({
|
|
98
|
+
capability: context.capability.direct,
|
|
99
|
+
workingDirectory: context.profile.working_directory,
|
|
100
|
+
environment: options.environment,
|
|
101
|
+
mcpEndpoint: context.endpoint,
|
|
102
|
+
});
|
|
103
|
+
};
|
|
104
|
+
const enableEnrolledIdentity = async () => {
|
|
105
|
+
if (rest !== undefined && relay !== undefined)
|
|
106
|
+
return;
|
|
107
|
+
if (activation !== undefined)
|
|
108
|
+
return activation;
|
|
109
|
+
activation = (async () => {
|
|
110
|
+
const profile = await loadProfile();
|
|
111
|
+
const transport = new CentralProtectedTransport({
|
|
112
|
+
credential: () => identity.credential(),
|
|
113
|
+
nonceCache: new DpopNonceCache(),
|
|
114
|
+
...(options.centralFetch === undefined ? {} : { fetch: options.centralFetch }),
|
|
115
|
+
now: nowSeconds,
|
|
116
|
+
});
|
|
117
|
+
const nextRest = new CentralRestClient({ centralOrigin, transport });
|
|
118
|
+
const target = createDeliveryTarget({ ...profile, endpoint: local.endpoint });
|
|
119
|
+
const nextRelay = new NotificationRelay({
|
|
120
|
+
journal,
|
|
121
|
+
deliveryTarget: target,
|
|
122
|
+
receiveMessages: async (signal) => {
|
|
123
|
+
try {
|
|
124
|
+
return (await nextRest.pollRemoteMessages(CENTRAL_POLL_SECONDS, signal)).messages;
|
|
125
|
+
}
|
|
126
|
+
catch (error) {
|
|
127
|
+
if (error instanceof CentralRestError &&
|
|
128
|
+
(error.code === "central_request_failed" || error.code === "central_request_rejected")) {
|
|
129
|
+
throw new RetryableNotificationReceiveError();
|
|
130
|
+
}
|
|
131
|
+
if (error instanceof CentralRestError && error.code === "central_response_invalid") {
|
|
132
|
+
throw new NotificationRelayError("invalid_notification_response");
|
|
133
|
+
}
|
|
134
|
+
throw error;
|
|
135
|
+
}
|
|
136
|
+
},
|
|
137
|
+
acknowledgeMessage: async (messageId, signal) => {
|
|
138
|
+
await nextRest.ackMessage({ message_id: messageId }, signal);
|
|
139
|
+
},
|
|
140
|
+
});
|
|
141
|
+
rest = nextRest;
|
|
142
|
+
relay = nextRelay;
|
|
143
|
+
relayRun = nextRelay.run(lifetimeSignal);
|
|
144
|
+
void relayRun.catch((error) => {
|
|
145
|
+
if (!closed && !lifetimeSignal.aborted) {
|
|
146
|
+
reportFailure?.(error instanceof Error ? error : safeFailure());
|
|
147
|
+
}
|
|
148
|
+
});
|
|
149
|
+
})();
|
|
150
|
+
try {
|
|
151
|
+
await activation;
|
|
152
|
+
}
|
|
153
|
+
finally {
|
|
154
|
+
activation = undefined;
|
|
155
|
+
}
|
|
156
|
+
};
|
|
157
|
+
const requireRest = () => {
|
|
158
|
+
if (rest === undefined)
|
|
159
|
+
throw safeFailure();
|
|
160
|
+
return rest;
|
|
161
|
+
};
|
|
162
|
+
const router = {
|
|
163
|
+
async listTools() {
|
|
164
|
+
return [...(identity.enrolled ? REST_AUTHENTICATED_TOOLS : REST_BOOTSTRAP_TOOLS)];
|
|
165
|
+
},
|
|
166
|
+
async callTool(name, untrustedArguments, signal, clientInfo) {
|
|
167
|
+
try {
|
|
168
|
+
const arguments_ = safeLocalToolArguments(untrustedArguments);
|
|
169
|
+
let result;
|
|
170
|
+
if (!identity.enrolled) {
|
|
171
|
+
switch (name) {
|
|
172
|
+
case "register_agent":
|
|
173
|
+
result = await guidedRegistration.register(arguments_, clientInfo, signal);
|
|
174
|
+
break;
|
|
175
|
+
case "resend_verification":
|
|
176
|
+
result = await enrollment.resend(arguments_, signal);
|
|
177
|
+
break;
|
|
178
|
+
case "verify_email":
|
|
179
|
+
await loadProfile();
|
|
180
|
+
result = await identity.enroll(() => enrollment.verify(arguments_, signal));
|
|
181
|
+
await enableEnrolledIdentity();
|
|
182
|
+
await local.sendToolListChanged();
|
|
183
|
+
break;
|
|
184
|
+
default:
|
|
185
|
+
throw new LocalMcpToolError("tool_not_found");
|
|
186
|
+
}
|
|
187
|
+
assertSafeUpstreamResult(result);
|
|
188
|
+
return result;
|
|
189
|
+
}
|
|
190
|
+
switch (name) {
|
|
191
|
+
case "list_action_types":
|
|
192
|
+
result = { action_types: await requireRest().listActionTypes(signal) };
|
|
193
|
+
break;
|
|
194
|
+
case "request_permission":
|
|
195
|
+
result = await requireRest().requestPermission(arguments_, signal);
|
|
196
|
+
break;
|
|
197
|
+
case "respond_to_permission":
|
|
198
|
+
result = await requireRest().respondToPermission(arguments_, signal);
|
|
199
|
+
break;
|
|
200
|
+
case "call_action":
|
|
201
|
+
result = await requireRest().callAction(arguments_, signal);
|
|
202
|
+
break;
|
|
203
|
+
case "submit_action_result":
|
|
204
|
+
result = await requireRest().submitActionResult(arguments_, signal);
|
|
205
|
+
break;
|
|
206
|
+
case "get_my_permissions":
|
|
207
|
+
if (Object.keys(arguments_).length !== 0)
|
|
208
|
+
throw new McpContractError();
|
|
209
|
+
result = { permissions: await requireRest().getMyPermissions(signal) };
|
|
210
|
+
break;
|
|
211
|
+
default:
|
|
212
|
+
throw new LocalMcpToolError("tool_not_found");
|
|
213
|
+
}
|
|
214
|
+
assertSafeUpstreamResult(result, identity.credential().record.access_token);
|
|
215
|
+
return result;
|
|
216
|
+
}
|
|
217
|
+
catch (error) {
|
|
218
|
+
throw localError(error);
|
|
219
|
+
}
|
|
220
|
+
},
|
|
221
|
+
};
|
|
222
|
+
try {
|
|
223
|
+
identity = await GatewayIdentity.open(store, nowSeconds);
|
|
224
|
+
if (identity.enrolled)
|
|
225
|
+
await loadProfile();
|
|
226
|
+
local = new LocalMcpServer(router, {
|
|
227
|
+
...(options.localMcpPort === undefined ? {} : { port: options.localMcpPort }),
|
|
228
|
+
});
|
|
229
|
+
await local.listen();
|
|
230
|
+
if (identity.enrolled)
|
|
231
|
+
await enableEnrolledIdentity();
|
|
232
|
+
}
|
|
233
|
+
catch (error) {
|
|
234
|
+
controller.abort();
|
|
235
|
+
await relay?.shutdown().catch(() => undefined);
|
|
236
|
+
await local?.close().catch(() => undefined);
|
|
237
|
+
journal.close();
|
|
238
|
+
throw error;
|
|
239
|
+
}
|
|
240
|
+
return {
|
|
241
|
+
endpoint: local.endpoint,
|
|
242
|
+
failure,
|
|
243
|
+
async close() {
|
|
244
|
+
if (closed)
|
|
245
|
+
return;
|
|
246
|
+
closed = true;
|
|
247
|
+
controller.abort();
|
|
248
|
+
await relay?.shutdown().catch(() => undefined);
|
|
249
|
+
await relayRun?.catch(() => undefined);
|
|
250
|
+
await local.close();
|
|
251
|
+
journal.close();
|
|
252
|
+
},
|
|
253
|
+
};
|
|
254
|
+
}
|
|
255
|
+
//# sourceMappingURL=gateway-application.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gateway-application.js","sourceRoot":"","sources":["../src/gateway-application.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { posix } from "node:path";
|
|
2
|
+
export interface GatewayPaths {
|
|
3
|
+
stateDirectory: string;
|
|
4
|
+
journalPath: string;
|
|
5
|
+
lockPath: string;
|
|
6
|
+
credentialPath: string;
|
|
7
|
+
credentialKeyPath: string;
|
|
8
|
+
profilePath: string;
|
|
9
|
+
}
|
|
10
|
+
export declare function pathsForStateDirectory(stateDirectory: string, join?: typeof posix.join): GatewayPaths;
|
|
11
|
+
export declare function defaultGatewayPaths(platform: NodeJS.Platform, environment: NodeJS.ProcessEnv, homeDirectory: string): GatewayPaths;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { posix, win32 } from "node:path";
|
|
2
|
+
export function pathsForStateDirectory(stateDirectory, join = posix.join) {
|
|
3
|
+
return {
|
|
4
|
+
stateDirectory,
|
|
5
|
+
journalPath: join(stateDirectory, "notifications.sqlite"),
|
|
6
|
+
lockPath: join(stateDirectory, "ambassador.lock"),
|
|
7
|
+
credentialPath: join(stateDirectory, "central-credential.json"),
|
|
8
|
+
credentialKeyPath: join(stateDirectory, "central-credential.key"),
|
|
9
|
+
profilePath: join(stateDirectory, "delivery-profile.json"),
|
|
10
|
+
};
|
|
11
|
+
}
|
|
12
|
+
export function defaultGatewayPaths(platform, environment, homeDirectory) {
|
|
13
|
+
if (homeDirectory.length === 0) {
|
|
14
|
+
throw new Error("Home directory is unavailable");
|
|
15
|
+
}
|
|
16
|
+
if (platform === "darwin") {
|
|
17
|
+
return pathsForStateDirectory(posix.join(homeDirectory, "Library", "Application Support", "ambassador"));
|
|
18
|
+
}
|
|
19
|
+
if (platform === "linux") {
|
|
20
|
+
const stateRoot = environment.XDG_STATE_HOME || posix.join(homeDirectory, ".local", "state");
|
|
21
|
+
return pathsForStateDirectory(posix.join(stateRoot, "ambassador"));
|
|
22
|
+
}
|
|
23
|
+
if (platform === "win32") {
|
|
24
|
+
const stateRoot = environment.LOCALAPPDATA || win32.join(homeDirectory, "AppData", "Local");
|
|
25
|
+
return pathsForStateDirectory(win32.join(stateRoot, "ambassador"), win32.join);
|
|
26
|
+
}
|
|
27
|
+
throw new Error("Unsupported platform");
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=gateway-paths.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gateway-paths.js","sourceRoot":"","sources":["../src/gateway-paths.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;AAWzC,MAAM,UAAU,sBAAsB,CACpC,cAAsB,EACtB,IAAI,GAAsB,KAAK,CAAC,IAAI;IAEpC,OAAO;QACL,cAAc;QACd,WAAW,EAAE,IAAI,CAAC,cAAc,EAAE,sBAAsB,CAAC;QACzD,QAAQ,EAAE,IAAI,CAAC,cAAc,EAAE,iBAAiB,CAAC;QACjD,cAAc,EAAE,IAAI,CAAC,cAAc,EAAE,yBAAyB,CAAC;QAC/D,iBAAiB,EAAE,IAAI,CAAC,cAAc,EAAE,wBAAwB,CAAC;QACjE,WAAW,EAAE,IAAI,CAAC,cAAc,EAAE,uBAAuB,CAAC;KAC3D,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,mBAAmB,CACjC,QAAyB,EACzB,WAA8B,EAC9B,aAAqB;IAErB,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC/B,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;IACnD,CAAC;IAED,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAC1B,OAAO,sBAAsB,CAC3B,KAAK,CAAC,IAAI,CAAC,aAAa,EAAE,SAAS,EAAE,qBAAqB,EAAE,YAAY,CAAC,CAC1E,CAAC;IACJ,CAAC;IAED,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;QACzB,MAAM,SAAS,GAAG,WAAW,CAAC,cAAc,IAAI,KAAK,CAAC,IAAI,CAAC,aAAa,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;QAC7F,OAAO,sBAAsB,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC,CAAC;IACrE,CAAC;IAED,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;QACzB,MAAM,SAAS,GAAG,WAAW,CAAC,YAAY,IAAI,KAAK,CAAC,IAAI,CAAC,aAAa,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;QAC5F,OAAO,sBAAsB,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;IACjF,CAAC;IAED,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;AAC1C,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { type AgentCapability, type AgentClientInfo } from "./agent-capabilities.js";
|
|
2
|
+
import { type DeliveryProfileStore } from "./delivery-profile.js";
|
|
3
|
+
export type GuidedRegistrationErrorCode = "invalid_arguments" | "registration_failed";
|
|
4
|
+
export declare class GuidedRegistrationError extends Error {
|
|
5
|
+
readonly code: GuidedRegistrationErrorCode;
|
|
6
|
+
constructor(code: GuidedRegistrationErrorCode);
|
|
7
|
+
}
|
|
8
|
+
export interface CentralRegistrationArguments {
|
|
9
|
+
readonly email: string;
|
|
10
|
+
readonly display_name?: string;
|
|
11
|
+
}
|
|
12
|
+
export interface GuidedRegistrationOptions {
|
|
13
|
+
readonly registry?: readonly AgentCapability[];
|
|
14
|
+
readonly profileStore: DeliveryProfileStore;
|
|
15
|
+
readonly workingDirectory: string;
|
|
16
|
+
readonly environment: NodeJS.ProcessEnv;
|
|
17
|
+
readonly registerCentral: (arguments_: CentralRegistrationArguments, signal: AbortSignal) => Promise<Record<string, string>>;
|
|
18
|
+
}
|
|
19
|
+
export declare class GuidedRegistration {
|
|
20
|
+
#private;
|
|
21
|
+
constructor(options: GuidedRegistrationOptions);
|
|
22
|
+
register(untrustedArguments: unknown, clientInfo: AgentClientInfo | undefined, signal: AbortSignal): Promise<Record<string, unknown>>;
|
|
23
|
+
}
|