@frontmcp/adapters 1.8.2 → 1.8.4
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/esm/index.mjs +287 -72
- package/esm/openapi/index.mjs +287 -72
- package/esm/package.json +6 -6
- package/esm/skills/index.mjs +94 -12
- package/index.js +288 -76
- package/openapi/index.js +288 -76
- package/openapi/openapi.adapter.d.ts.map +1 -1
- package/openapi/openapi.security.d.ts +44 -5
- package/openapi/openapi.security.d.ts.map +1 -1
- package/openapi/openapi.tool.d.ts.map +1 -1
- package/openapi/openapi.types.d.ts +19 -0
- package/openapi/openapi.types.d.ts.map +1 -1
- package/package.json +6 -6
- package/skills/bundle/bundle.schema.d.ts +2 -2
- package/skills/index.js +94 -12
- package/skills/source-options.d.ts.map +1 -1
- package/skills/sources/npm.source.d.ts +9 -4
- package/skills/sources/npm.source.d.ts.map +1 -1
- package/skills/sources/saas-pull.source.d.ts +25 -2
- package/skills/sources/saas-pull.source.d.ts.map +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openapi.types.d.ts","sourceRoot":"","sources":["../../src/openapi/openapi.types.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"openapi.types.d.ts","sourceRoot":"","sources":["../../src/openapi/openapi.types.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@frontmcp/adapters",
|
|
3
|
-
"version": "1.8.
|
|
3
|
+
"version": "1.8.4",
|
|
4
4
|
"description": "Adapters for the FrontMCP framework",
|
|
5
5
|
"author": "AgentFront <info@agentfront.dev>",
|
|
6
6
|
"homepage": "https://docs.agentfront.dev",
|
|
@@ -64,15 +64,15 @@
|
|
|
64
64
|
"node": ">=24.0.0"
|
|
65
65
|
},
|
|
66
66
|
"dependencies": {
|
|
67
|
-
"@frontmcp/auth": "1.8.
|
|
68
|
-
"@frontmcp/di": "1.8.
|
|
69
|
-
"@frontmcp/sdk": "1.8.
|
|
70
|
-
"@frontmcp/utils": "1.8.
|
|
67
|
+
"@frontmcp/auth": "1.8.4",
|
|
68
|
+
"@frontmcp/di": "1.8.4",
|
|
69
|
+
"@frontmcp/sdk": "1.8.4",
|
|
70
|
+
"@frontmcp/utils": "1.8.4",
|
|
71
71
|
"js-yaml": "^4.1.0",
|
|
72
72
|
"mcp-from-openapi": "2.8.0",
|
|
73
73
|
"openapi-types": "^12.1.3"
|
|
74
74
|
},
|
|
75
75
|
"peerDependencies": {
|
|
76
|
-
"@frontmcp/lazy-zod": "1.8.
|
|
76
|
+
"@frontmcp/lazy-zod": "1.8.4"
|
|
77
77
|
}
|
|
78
78
|
}
|
|
@@ -56,10 +56,10 @@ export declare const resolvedBundleSchema: import("@frontmcp/lazy-zod").ZodObjec
|
|
|
56
56
|
mapper: import("@frontmcp/lazy-zod").ZodArray<import("@frontmcp/lazy-zod").ZodObject<{
|
|
57
57
|
inputKey: import("@frontmcp/lazy-zod").ZodString;
|
|
58
58
|
type: import("@frontmcp/lazy-zod").ZodEnum<{
|
|
59
|
-
query: "query";
|
|
60
|
-
cookie: "cookie";
|
|
61
59
|
path: "path";
|
|
60
|
+
query: "query";
|
|
62
61
|
header: "header";
|
|
62
|
+
cookie: "cookie";
|
|
63
63
|
body: "body";
|
|
64
64
|
}>;
|
|
65
65
|
key: import("@frontmcp/lazy-zod").ZodString;
|
package/skills/index.js
CHANGED
|
@@ -709,7 +709,13 @@ var npmSourceSchema = import_lazy_zod2.z.object({
|
|
|
709
709
|
exportName: import_lazy_zod2.z.string().optional(),
|
|
710
710
|
/**
|
|
711
711
|
* Verify GitHub artifact attestation / npm provenance for the package before loading.
|
|
712
|
-
* Defaults to true.
|
|
712
|
+
* Defaults to true. Provenance verification is not implemented yet, so `true` refuses
|
|
713
|
+
* to load the package; set `false` to load it without a provenance check.
|
|
714
|
+
*
|
|
715
|
+
* With `false`, the package is imported (its code runs) before the bundle is parsed, so
|
|
716
|
+
* bundle signing (`requireSignature` + `trustedKeys`) cannot protect the import itself.
|
|
717
|
+
* Only use it for a package you trust: pin its exact version in `package.json` and
|
|
718
|
+
* install from a lockfile with integrity hashes.
|
|
713
719
|
*/
|
|
714
720
|
verifyProvenance: import_lazy_zod2.z.boolean().default(true)
|
|
715
721
|
});
|
|
@@ -717,11 +723,15 @@ var saasSourceSchema = import_lazy_zod2.z.object({
|
|
|
717
723
|
type: import_lazy_zod2.z.literal("saas"),
|
|
718
724
|
/** SaaS pull endpoint, e.g. `https://cloud.frontmcp.dev/v1/bundles/<bundleId>`. */
|
|
719
725
|
endpoint: httpsUrl,
|
|
720
|
-
/**
|
|
726
|
+
/**
|
|
727
|
+
* Pinned JWT issued by the SaaS for the customer's FrontMCP server. Verified
|
|
728
|
+
* before every pull: signed by a key in `jwksUrl`, `iss` = `expectedIssuer`,
|
|
729
|
+
* `aud` includes `expectedAudience`, not expired. A rejected token stops the pull.
|
|
730
|
+
*/
|
|
721
731
|
authToken: import_lazy_zod2.z.string().min(1),
|
|
722
732
|
/**
|
|
723
|
-
* RFC 8707 resource indicator the JWT must encode
|
|
724
|
-
*
|
|
733
|
+
* RFC 8707 resource indicator the JWT must encode: its `aud` claim must include
|
|
734
|
+
* this value (and its `resource` claim too, when it has one).
|
|
725
735
|
*/
|
|
726
736
|
expectedAudience: import_lazy_zod2.z.string().min(1),
|
|
727
737
|
/** Polling interval in ms (boot pull is always immediate). Default 300000 (5 min). */
|
|
@@ -731,9 +741,9 @@ var saasSourceSchema = import_lazy_zod2.z.object({
|
|
|
731
741
|
* updates synchronously. Default false in v1.2 (interval polling only).
|
|
732
742
|
*/
|
|
733
743
|
enableWebhook: import_lazy_zod2.z.boolean().default(false),
|
|
734
|
-
/** JWKS URL for verifying SaaS-issued tokens. */
|
|
744
|
+
/** JWKS URL for verifying SaaS-issued tokens (fetched without credentials, redirects refused). */
|
|
735
745
|
jwksUrl: httpsUrl,
|
|
736
|
-
/** Expected issuer (`iss`) claim
|
|
746
|
+
/** Expected issuer (`iss`) claim of `authToken`. */
|
|
737
747
|
expectedIssuer: import_lazy_zod2.z.string().min(1)
|
|
738
748
|
});
|
|
739
749
|
var inlineSourceSchema = import_lazy_zod2.z.object({
|
|
@@ -831,8 +841,8 @@ var NpmSource = class {
|
|
|
831
841
|
}
|
|
832
842
|
async loadBundleFromPackage() {
|
|
833
843
|
if (this.options.verifyProvenance) {
|
|
834
|
-
|
|
835
|
-
`
|
|
844
|
+
throw new Error(
|
|
845
|
+
`npm source "${this.options.packageName}": verifyProvenance is true, but npm provenance verification is not implemented, so the package was not loaded. Set verifyProvenance: false to load it without a provenance check, only for a package you trust: importing it runs its code before any bundle signature is checked, so pin its exact version and install it from a lockfile with integrity hashes.`
|
|
836
846
|
);
|
|
837
847
|
}
|
|
838
848
|
const mod = await this.dynamicImport(this.options.packageName);
|
|
@@ -867,9 +877,33 @@ var NpmSource = class {
|
|
|
867
877
|
};
|
|
868
878
|
|
|
869
879
|
// libs/adapters/src/skills/sources/saas-pull.source.ts
|
|
880
|
+
var import_auth = require("@frontmcp/auth");
|
|
870
881
|
var import_utils = require("@frontmcp/utils");
|
|
871
882
|
var DEFAULT_CACHE_DIR = ".frontmcp/skilled-openapi";
|
|
872
883
|
var DEFAULT_PULL_TIMEOUT_MS = 3e4;
|
|
884
|
+
var USER_AGENT = "frontmcp-skilled-openapi";
|
|
885
|
+
var SaasPullTokenRejectedError = class extends Error {
|
|
886
|
+
constructor(reason) {
|
|
887
|
+
super(`[saas-source] pull token rejected: ${reason}`);
|
|
888
|
+
this.name = "SaasPullTokenRejectedError";
|
|
889
|
+
}
|
|
890
|
+
};
|
|
891
|
+
function claimValues(claim) {
|
|
892
|
+
if (Array.isArray(claim)) return claim;
|
|
893
|
+
return claim === void 0 ? [] : [claim];
|
|
894
|
+
}
|
|
895
|
+
var PUBLIC_KEY_MEMBERS = /* @__PURE__ */ new Map([
|
|
896
|
+
["RSA", ["n", "e"]],
|
|
897
|
+
["EC", ["crv", "x", "y"]],
|
|
898
|
+
["OKP", ["crv", "x"]]
|
|
899
|
+
]);
|
|
900
|
+
function isUsableSigningKey(key) {
|
|
901
|
+
if (typeof key !== "object" || key === null) return false;
|
|
902
|
+
const jwk = key;
|
|
903
|
+
const members = typeof jwk["kty"] === "string" ? PUBLIC_KEY_MEMBERS.get(jwk["kty"]) : void 0;
|
|
904
|
+
if (!members || jwk["use"] !== void 0 && jwk["use"] !== "sig") return false;
|
|
905
|
+
return members.every((m) => typeof jwk[m] === "string" && jwk[m] !== "");
|
|
906
|
+
}
|
|
873
907
|
var SaasPullSource = class {
|
|
874
908
|
constructor(options, cacheDir, logger, deps = {}) {
|
|
875
909
|
this.options = options;
|
|
@@ -887,6 +921,7 @@ var SaasPullSource = class {
|
|
|
887
921
|
pollHandle;
|
|
888
922
|
inFlight = false;
|
|
889
923
|
stopped = false;
|
|
924
|
+
jwksService = new import_auth.JwksService({});
|
|
890
925
|
async start() {
|
|
891
926
|
if (this.stopped || this.inFlight) {
|
|
892
927
|
this.schedulePoll();
|
|
@@ -899,6 +934,7 @@ var SaasPullSource = class {
|
|
|
899
934
|
bundle = await this.fetchOnce();
|
|
900
935
|
await this.persistCache(bundle);
|
|
901
936
|
} catch (e) {
|
|
937
|
+
if (e instanceof SaasPullTokenRejectedError) throw e;
|
|
902
938
|
this.logger.warn(
|
|
903
939
|
`[saas-source] initial pull failed (${e.message}); attempting cached bundle fallback`
|
|
904
940
|
);
|
|
@@ -970,7 +1006,11 @@ var SaasPullSource = class {
|
|
|
970
1006
|
await this.persistCache(bundle);
|
|
971
1007
|
this.notify(bundle);
|
|
972
1008
|
} catch (e) {
|
|
973
|
-
|
|
1009
|
+
if (e instanceof SaasPullTokenRejectedError) {
|
|
1010
|
+
this.logger.error(`[saas-source] poll refused: ${e.message}; keeping the current bundle`);
|
|
1011
|
+
} else {
|
|
1012
|
+
this.logger.warn(`[saas-source] poll failed: ${e.message}`);
|
|
1013
|
+
}
|
|
974
1014
|
} finally {
|
|
975
1015
|
this.inFlight = false;
|
|
976
1016
|
this.schedulePoll();
|
|
@@ -991,11 +1031,53 @@ var SaasPullSource = class {
|
|
|
991
1031
|
clearTimeout(timer);
|
|
992
1032
|
}
|
|
993
1033
|
}
|
|
1034
|
+
/**
|
|
1035
|
+
* Verify the pinned pull token against the issuer's JWKS, issuer and audience.
|
|
1036
|
+
* Throws {@link SaasPullTokenRejectedError} when the token is refused, and a
|
|
1037
|
+
* plain Error when the JWKS can't be fetched (an outage).
|
|
1038
|
+
*/
|
|
1039
|
+
async verifyPullToken() {
|
|
1040
|
+
const { jwksUrl, expectedIssuer, expectedAudience, authToken } = this.options;
|
|
1041
|
+
const { status, body } = await this.httpGet(jwksUrl, { Accept: "application/json", "User-Agent": USER_AGENT });
|
|
1042
|
+
if (status < 200 || status >= 300) {
|
|
1043
|
+
throw new Error(`JWKS ${jwksUrl} responded ${status}`);
|
|
1044
|
+
}
|
|
1045
|
+
let jwks;
|
|
1046
|
+
try {
|
|
1047
|
+
jwks = JSON.parse(body);
|
|
1048
|
+
} catch {
|
|
1049
|
+
throw new Error(`JWKS ${jwksUrl} is not valid JSON`);
|
|
1050
|
+
}
|
|
1051
|
+
if (!jwks || !Array.isArray(jwks.keys) || jwks.keys.length === 0) {
|
|
1052
|
+
throw new Error(`JWKS ${jwksUrl} has no keys`);
|
|
1053
|
+
}
|
|
1054
|
+
const signingKeys = jwks.keys.filter(isUsableSigningKey);
|
|
1055
|
+
if (signingKeys.length === 0) {
|
|
1056
|
+
throw new Error(`JWKS ${jwksUrl} has no usable signing keys`);
|
|
1057
|
+
}
|
|
1058
|
+
const verified = await this.jwksService.verifyTransparentToken(authToken, [
|
|
1059
|
+
{ id: "skilled-openapi-saas", issuerUrl: expectedIssuer, jwks: { keys: signingKeys } }
|
|
1060
|
+
]);
|
|
1061
|
+
if (!verified.ok || !verified.payload) {
|
|
1062
|
+
throw new SaasPullTokenRejectedError(
|
|
1063
|
+
`not a valid token from issuer "${expectedIssuer}" signed by a key in ${jwksUrl} (${verified.error ?? "verification failed"})`
|
|
1064
|
+
);
|
|
1065
|
+
}
|
|
1066
|
+
const payload = verified.payload;
|
|
1067
|
+
if (!claimValues(payload["aud"]).includes(expectedAudience)) {
|
|
1068
|
+
throw new SaasPullTokenRejectedError(`its "aud" claim does not include "${expectedAudience}"`);
|
|
1069
|
+
}
|
|
1070
|
+
const resource = claimValues(payload["resource"]);
|
|
1071
|
+
if (resource.length > 0 && !resource.includes(expectedAudience)) {
|
|
1072
|
+
throw new SaasPullTokenRejectedError(`its "resource" claim does not include "${expectedAudience}"`);
|
|
1073
|
+
}
|
|
1074
|
+
}
|
|
994
1075
|
async fetchOnce() {
|
|
1076
|
+
await this.verifyPullToken();
|
|
995
1077
|
const { status, body } = await this.httpGet(this.options.endpoint, {
|
|
996
1078
|
Authorization: `Bearer ${this.options.authToken}`,
|
|
997
1079
|
Accept: "application/json, application/yaml",
|
|
998
|
-
"User-Agent":
|
|
1080
|
+
"User-Agent": USER_AGENT
|
|
999
1081
|
});
|
|
1000
1082
|
if (status < 200 || status >= 300) {
|
|
1001
1083
|
throw new Error(`pull responded ${status}`);
|
|
@@ -1609,13 +1691,13 @@ function verifyBundleSignature(bundle, trustedKeys, telemetry) {
|
|
|
1609
1691
|
}
|
|
1610
1692
|
|
|
1611
1693
|
// libs/adapters/src/skills/security/jwt-verifier.ts
|
|
1612
|
-
var
|
|
1694
|
+
var import_auth2 = require("@frontmcp/auth");
|
|
1613
1695
|
var DEFAULT_REQUIRED_ROLES = ["frontmcp:cloud:push"];
|
|
1614
1696
|
var BundlePushJwtVerifier = class {
|
|
1615
1697
|
constructor(options, logger, jwks) {
|
|
1616
1698
|
this.options = options;
|
|
1617
1699
|
this.logger = logger;
|
|
1618
|
-
this.jwks = jwks ?? new
|
|
1700
|
+
this.jwks = jwks ?? new import_auth2.JwksService({});
|
|
1619
1701
|
this.providerRef = {
|
|
1620
1702
|
id: "skilled-openapi-cloud-push",
|
|
1621
1703
|
issuerUrl: options.expectedIssuer,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"source-options.d.ts","sourceRoot":"","sources":["../../src/skills/source-options.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,CAAC,EAAE,MAAM,oBAAoB,CAAC;AAkBvC,eAAO,MAAM,kBAAkB;;;;gCAM7B,CAAC;AAEH,eAAO,MAAM,eAAe;;;;;
|
|
1
|
+
{"version":3,"file":"source-options.d.ts","sourceRoot":"","sources":["../../src/skills/source-options.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,CAAC,EAAE,MAAM,oBAAoB,CAAC;AAkBvC,eAAO,MAAM,kBAAkB;;;;gCAM7B,CAAC;AAEH,eAAO,MAAM,eAAe;;;;;gCAiB1B,CAAC;AAEH,eAAO,MAAM,gBAAgB;;;;;;;;;gCA0B3B,CAAC;AAEH,eAAO,MAAM,kBAAkB;;;gCAS7B,CAAC;AAEH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;0CAK7B,CAAC;AAEH,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AACrE,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAC/D,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AACjE,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AACrE,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAIrE,eAAO,MAAM,kBAAkB;;;;;;;gCAO7B,CAAC;AAEH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC"}
|
|
@@ -8,10 +8,15 @@ import type { BundleSourceListener, SkillBundleSource } from './skill-bundle-sou
|
|
|
8
8
|
* `package.json` and only updates after a server redeploy. This is the
|
|
9
9
|
* intentional, lower-blast-radius distribution mode.
|
|
10
10
|
*
|
|
11
|
-
* Provenance verification (GitHub artifact attestations / Sigstore) is
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
11
|
+
* Provenance verification (GitHub artifact attestations / Sigstore) is not
|
|
12
|
+
* implemented. `verifyProvenance: true` (the default) therefore refuses the
|
|
13
|
+
* package before it is imported: a setting that promises a supply-chain check
|
|
14
|
+
* must not load code it could not check. Set `verifyProvenance: false` to load
|
|
15
|
+
* the package without one. The package is then imported, and its code runs,
|
|
16
|
+
* before the bundle is parsed, so bundle signing (`requireSignature` +
|
|
17
|
+
* `trustedKeys`) protects the bundle's content but not the import: trust comes
|
|
18
|
+
* from the package itself (an exact pinned version installed from a lockfile
|
|
19
|
+
* with integrity hashes).
|
|
15
20
|
*/
|
|
16
21
|
export declare class NpmSource implements SkillBundleSource {
|
|
17
22
|
private readonly options;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"npm.source.d.ts","sourceRoot":"","sources":["../../../src/skills/sources/npm.source.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAIpD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,KAAK,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AAO/F
|
|
1
|
+
{"version":3,"file":"npm.source.d.ts","sourceRoot":"","sources":["../../../src/skills/sources/npm.source.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAIpD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,KAAK,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AAO/F;;;;;;;;;;;;;;;;GAgBG;AACH,qBAAa,SAAU,YAAW,iBAAiB;IAO/C,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,MAAM;IAPzB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IAEpB,OAAO,CAAC,SAAS,CAAmC;IACpD,OAAO,CAAC,MAAM,CAAC,CAAiB;gBAGb,OAAO,EAAE,gBAAgB,EACzB,MAAM,EAAE,cAAc;IAKnC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAM5B,QAAQ,CAAC,QAAQ,EAAE,oBAAoB,GAAG,MAAM,IAAI;IAe9C,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;YAIb,qBAAqB;IA6BnC,SAAS,CAAC,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAK5D,OAAO,CAAC,MAAM;CASf"}
|
|
@@ -2,6 +2,14 @@ import type { FrontMcpLogger } from '@frontmcp/sdk';
|
|
|
2
2
|
import type { ResolvedBundle } from '../bundle/bundle.types';
|
|
3
3
|
import type { SaasSourceOptions } from '../source-options';
|
|
4
4
|
import type { BundleSourceDeps, BundleSourceListener, SkillBundleSource } from './skill-bundle-source.interface';
|
|
5
|
+
/**
|
|
6
|
+
* The pinned pull token failed verification against `jwksUrl`, `expectedIssuer`
|
|
7
|
+
* or `expectedAudience`. Unlike an outage, this never falls back to a cached
|
|
8
|
+
* bundle: the configured SaaS is not the one the server was set up to trust.
|
|
9
|
+
*/
|
|
10
|
+
export declare class SaasPullTokenRejectedError extends Error {
|
|
11
|
+
constructor(reason: string);
|
|
12
|
+
}
|
|
5
13
|
/**
|
|
6
14
|
* Pulls bundles from a configured SaaS endpoint via authenticated HTTPS.
|
|
7
15
|
*
|
|
@@ -17,8 +25,16 @@ import type { BundleSourceDeps, BundleSourceListener, SkillBundleSource } from '
|
|
|
17
25
|
* `enableWebhook` and deferred to v1.2.x (route mounting requires plugin HTTP
|
|
18
26
|
* infrastructure not yet in scope).
|
|
19
27
|
*
|
|
20
|
-
*
|
|
21
|
-
*
|
|
28
|
+
* Before every pull the pinned `authToken` is verified: it must be a JWT signed
|
|
29
|
+
* by a key in the issuer's JWKS (`jwksUrl`), with `iss` equal to
|
|
30
|
+
* `expectedIssuer` and `aud` including `expectedAudience` (and `resource` too,
|
|
31
|
+
* when the token carries one), and not expired. A rejected token stops the pull
|
|
32
|
+
* and is never answered with the cached bundle ({@link SaasPullTokenRejectedError});
|
|
33
|
+
* an unreachable JWKS, or one with no usable signing key, is treated like any
|
|
34
|
+
* other pull failure (the cache fallback still applies).
|
|
35
|
+
*
|
|
36
|
+
* NOTE: Bundle signature verification is applied by the bundle-sync service
|
|
37
|
+
* before the bundle becomes active.
|
|
22
38
|
*/
|
|
23
39
|
export declare class SaasPullSource implements SkillBundleSource {
|
|
24
40
|
private readonly options;
|
|
@@ -30,6 +46,7 @@ export declare class SaasPullSource implements SkillBundleSource {
|
|
|
30
46
|
private pollHandle;
|
|
31
47
|
private inFlight;
|
|
32
48
|
private stopped;
|
|
49
|
+
private readonly jwksService;
|
|
33
50
|
constructor(options: SaasSourceOptions, cacheDir: string | undefined, logger: FrontMcpLogger, deps?: BundleSourceDeps);
|
|
34
51
|
start(): Promise<void>;
|
|
35
52
|
onChange(listener: BundleSourceListener): () => void;
|
|
@@ -48,6 +65,12 @@ export declare class SaasPullSource implements SkillBundleSource {
|
|
|
48
65
|
status: number;
|
|
49
66
|
body: string;
|
|
50
67
|
}>;
|
|
68
|
+
/**
|
|
69
|
+
* Verify the pinned pull token against the issuer's JWKS, issuer and audience.
|
|
70
|
+
* Throws {@link SaasPullTokenRejectedError} when the token is refused, and a
|
|
71
|
+
* plain Error when the JWKS can't be fetched (an outage).
|
|
72
|
+
*/
|
|
73
|
+
private verifyPullToken;
|
|
51
74
|
private fetchOnce;
|
|
52
75
|
private cachePath;
|
|
53
76
|
private persistCache;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"saas-pull.source.d.ts","sourceRoot":"","sources":["../../../src/skills/sources/saas-pull.source.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"saas-pull.source.d.ts","sourceRoot":"","sources":["../../../src/skills/sources/saas-pull.source.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAGpD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAE7D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,KAAK,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AAMjH;;;;GAIG;AACH,qBAAa,0BAA2B,SAAQ,KAAK;gBACvC,MAAM,EAAE,MAAM;CAI3B;AA4BD;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,qBAAa,cAAe,YAAW,iBAAiB;IAUpD,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,IAAI;IAZvB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IAEpB,OAAO,CAAC,SAAS,CAAmC;IACpD,OAAO,CAAC,UAAU,CAA6B;IAC/C,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAuB;gBAGhC,OAAO,EAAE,iBAAiB,EAC1B,QAAQ,EAAE,MAAM,GAAG,SAAS,EAC5B,MAAM,EAAE,cAAc,EACtB,IAAI,GAAE,gBAAqB;IAKxC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAwC5B,QAAQ,CAAC,QAAQ,EAAE,oBAAoB,GAAG,MAAM,IAAI;IAO9C,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAS3B,OAAO,CAAC,YAAY;IAcpB;;;;;;OAMG;IACG,OAAO,IAAI,OAAO,CAAC,cAAc,GAAG,SAAS,CAAC;YAatC,QAAQ;cAyBN,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IAoBhH;;;;OAIG;YACW,eAAe;YA2Cf,SAAS;IAkBvB,OAAO,CAAC,SAAS;YAKH,YAAY;YAeZ,SAAS;IAkBvB,OAAO,CAAC,MAAM;CASf"}
|