mcp-creatio 0.6.5 → 0.6.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/README.md +21 -11
- package/dist/creatio/auth/headers.d.ts +7 -0
- package/dist/creatio/auth/headers.d.ts.map +1 -1
- package/dist/creatio/auth/headers.js +16 -0
- package/dist/creatio/auth/headers.js.map +1 -1
- package/dist/creatio/auth/providers/legacy-provider.d.ts +2 -0
- package/dist/creatio/auth/providers/legacy-provider.d.ts.map +1 -1
- package/dist/creatio/auth/providers/legacy-provider.js +14 -7
- package/dist/creatio/auth/providers/legacy-provider.js.map +1 -1
- package/dist/creatio/auth/providers/oauth2-bearer-provider.d.ts +8 -7
- package/dist/creatio/auth/providers/oauth2-bearer-provider.d.ts.map +1 -1
- package/dist/creatio/auth/providers/oauth2-bearer-provider.js +19 -14
- package/dist/creatio/auth/providers/oauth2-bearer-provider.js.map +1 -1
- package/dist/creatio/services/dataservice/data-service-schema.d.ts.map +1 -1
- package/dist/creatio/services/dataservice/data-service-schema.js +16 -15
- package/dist/creatio/services/dataservice/data-service-schema.js.map +1 -1
- package/dist/creatio/services/odata/metadata-store.d.ts +10 -17
- package/dist/creatio/services/odata/metadata-store.d.ts.map +1 -1
- package/dist/creatio/services/odata/metadata-store.js +47 -75
- package/dist/creatio/services/odata/metadata-store.js.map +1 -1
- package/dist/creatio/services/versioned-ttl-cache.d.ts +33 -0
- package/dist/creatio/services/versioned-ttl-cache.d.ts.map +1 -0
- package/dist/creatio/services/versioned-ttl-cache.js +95 -0
- package/dist/creatio/services/versioned-ttl-cache.js.map +1 -0
- package/dist/server/bearer/bearer-edge.d.ts +4 -1
- package/dist/server/bearer/bearer-edge.d.ts.map +1 -1
- package/dist/server/bearer/bearer-edge.js +41 -15
- package/dist/server/bearer/bearer-edge.js.map +1 -1
- package/dist/server/http/health.d.ts +19 -0
- package/dist/server/http/health.d.ts.map +1 -0
- package/dist/server/http/health.js +41 -0
- package/dist/server/http/health.js.map +1 -0
- package/dist/server/http/http-server.d.ts +1 -0
- package/dist/server/http/http-server.d.ts.map +1 -1
- package/dist/server/http/http-server.js +9 -0
- package/dist/server/http/http-server.js.map +1 -1
- package/dist/server/http/index.d.ts +1 -0
- package/dist/server/http/index.d.ts.map +1 -1
- package/dist/server/http/index.js +1 -0
- package/dist/server/http/index.js.map +1 -1
- package/dist/server/http/mcp-handlers.d.ts.map +1 -1
- package/dist/server/http/mcp-handlers.js +4 -4
- package/dist/server/http/mcp-handlers.js.map +1 -1
- package/dist/utils/context.d.ts +21 -6
- package/dist/utils/context.d.ts.map +1 -1
- package/dist/utils/context.js +6 -6
- package/dist/utils/context.js.map +1 -1
- package/dist/utils/network.d.ts +2 -0
- package/dist/utils/network.d.ts.map +1 -1
- package/dist/utils/network.js +11 -0
- package/dist/utils/network.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"metadata-store.js","sourceRoot":"","sources":["../../../../src/creatio/services/odata/metadata-store.ts"],"names":[],"mappings":";;;;;;AAAA,qDAA4C;AAE5C,uDAA+B;
|
|
1
|
+
{"version":3,"file":"metadata-store.js","sourceRoot":"","sources":["../../../../src/creatio/services/odata/metadata-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A per-key cache whose entry is valid only while (a) its stamped freshness `version` still matches
|
|
3
|
+
* and (b) it is within `ttlMs` of being stored, bounded to `maxEntries` by LRU eviction.
|
|
4
|
+
*
|
|
5
|
+
* One abstraction for every "cache something per Creatio base URL, keyed and version-stamped" need —
|
|
6
|
+
* OData `$metadata` documents, OData entity-set lists, and DataService runtime schemas — so the
|
|
7
|
+
* freshness + TTL + eviction policy lives, and is tested, in exactly one place instead of being
|
|
8
|
+
* re-implemented (and drifting) in each schema provider. The `version` is supplied by the caller
|
|
9
|
+
* (typically {@link SchemaFreshnessGate}); when no gate is wired the caller passes a constant and
|
|
10
|
+
* the cache degrades to pure TTL + LRU.
|
|
11
|
+
*/
|
|
12
|
+
export declare class VersionedTtlCache<V> {
|
|
13
|
+
private readonly _ttlMs;
|
|
14
|
+
private readonly _maxEntries;
|
|
15
|
+
private readonly _entries;
|
|
16
|
+
private readonly _inflight;
|
|
17
|
+
constructor(ttlMs: number, maxEntries: number);
|
|
18
|
+
get size(): number;
|
|
19
|
+
/** The cached value iff present, version-matching and within TTL; otherwise `undefined`. Touches
|
|
20
|
+
* recency on a hit so the LRU cap evicts genuinely-cold keys, not just-used ones. */
|
|
21
|
+
get(key: string, version: string, now?: number): V | undefined;
|
|
22
|
+
/** Store (or replace) a value under `key`, then prune TTL-expired entries and enforce the LRU cap. */
|
|
23
|
+
set(key: string, value: V, version: string, now?: number): void;
|
|
24
|
+
/**
|
|
25
|
+
* Return the cached value, or run `loader` to produce and cache it on a miss. Concurrent misses
|
|
26
|
+
* for the same (key, version) are coalesced into a single `loader` call (single-flight), so a
|
|
27
|
+
* burst of cold requests for the same schema/metadata makes ONE network round-trip, not N. A
|
|
28
|
+
* rejected load is propagated to every waiter and NOT cached, so the next call retries.
|
|
29
|
+
*/
|
|
30
|
+
getOrLoad(key: string, version: string, loader: () => Promise<V>, now?: number): Promise<V>;
|
|
31
|
+
private _prune;
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=versioned-ttl-cache.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"versioned-ttl-cache.d.ts","sourceRoot":"","sources":["../../../src/creatio/services/versioned-ttl-cache.ts"],"names":[],"mappings":"AAOA;;;;;;;;;;GAUG;AACH,qBAAa,iBAAiB,CAAC,CAAC;IAC/B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IACrC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAkC;IAI3D,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAiC;gBAE/C,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM;IAK7C,IAAW,IAAI,IAAI,MAAM,CAExB;IAED;0FACsF;IAC/E,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,GAAE,MAAmB,GAAG,CAAC,GAAG,SAAS;IASjF,sGAAsG;IAC/F,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,GAAE,MAAmB,GAAG,IAAI;IAKlF;;;;;OAKG;IACU,SAAS,CACrB,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACxB,GAAG,GAAE,MAAmB,GACtB,OAAO,CAAC,CAAC,CAAC;IAuBb,OAAO,CAAC,MAAM;CAqBd"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.VersionedTtlCache = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* A per-key cache whose entry is valid only while (a) its stamped freshness `version` still matches
|
|
6
|
+
* and (b) it is within `ttlMs` of being stored, bounded to `maxEntries` by LRU eviction.
|
|
7
|
+
*
|
|
8
|
+
* One abstraction for every "cache something per Creatio base URL, keyed and version-stamped" need —
|
|
9
|
+
* OData `$metadata` documents, OData entity-set lists, and DataService runtime schemas — so the
|
|
10
|
+
* freshness + TTL + eviction policy lives, and is tested, in exactly one place instead of being
|
|
11
|
+
* re-implemented (and drifting) in each schema provider. The `version` is supplied by the caller
|
|
12
|
+
* (typically {@link SchemaFreshnessGate}); when no gate is wired the caller passes a constant and
|
|
13
|
+
* the cache degrades to pure TTL + LRU.
|
|
14
|
+
*/
|
|
15
|
+
class VersionedTtlCache {
|
|
16
|
+
_ttlMs;
|
|
17
|
+
_maxEntries;
|
|
18
|
+
_entries = new Map();
|
|
19
|
+
// In-flight loads for {@link getOrLoad}, keyed by key+version so concurrent misses for the same
|
|
20
|
+
// (key, version) share ONE loader call (single-flight) — and a stale-version miss never coalesces
|
|
21
|
+
// onto a fresh-version load. Cleared as soon as the load settles (whether it resolves or rejects).
|
|
22
|
+
_inflight = new Map();
|
|
23
|
+
constructor(ttlMs, maxEntries) {
|
|
24
|
+
this._ttlMs = ttlMs;
|
|
25
|
+
this._maxEntries = maxEntries;
|
|
26
|
+
}
|
|
27
|
+
get size() {
|
|
28
|
+
return this._entries.size;
|
|
29
|
+
}
|
|
30
|
+
/** The cached value iff present, version-matching and within TTL; otherwise `undefined`. Touches
|
|
31
|
+
* recency on a hit so the LRU cap evicts genuinely-cold keys, not just-used ones. */
|
|
32
|
+
get(key, version, now = Date.now()) {
|
|
33
|
+
const box = this._entries.get(key);
|
|
34
|
+
if (!box || box.version !== version || now - box.storedAt >= this._ttlMs) {
|
|
35
|
+
return undefined;
|
|
36
|
+
}
|
|
37
|
+
box.lastAccessMs = now;
|
|
38
|
+
return box.value;
|
|
39
|
+
}
|
|
40
|
+
/** Store (or replace) a value under `key`, then prune TTL-expired entries and enforce the LRU cap. */
|
|
41
|
+
set(key, value, version, now = Date.now()) {
|
|
42
|
+
this._entries.set(key, { value, version, storedAt: now, lastAccessMs: now });
|
|
43
|
+
this._prune(now);
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Return the cached value, or run `loader` to produce and cache it on a miss. Concurrent misses
|
|
47
|
+
* for the same (key, version) are coalesced into a single `loader` call (single-flight), so a
|
|
48
|
+
* burst of cold requests for the same schema/metadata makes ONE network round-trip, not N. A
|
|
49
|
+
* rejected load is propagated to every waiter and NOT cached, so the next call retries.
|
|
50
|
+
*/
|
|
51
|
+
async getOrLoad(key, version, loader, now = Date.now()) {
|
|
52
|
+
const hit = this.get(key, version, now);
|
|
53
|
+
if (hit !== undefined) {
|
|
54
|
+
return hit;
|
|
55
|
+
}
|
|
56
|
+
const flightKey = `${key}\u0000${version}`;
|
|
57
|
+
const existing = this._inflight.get(flightKey);
|
|
58
|
+
if (existing) {
|
|
59
|
+
return existing;
|
|
60
|
+
}
|
|
61
|
+
const flight = (async () => {
|
|
62
|
+
const value = await loader();
|
|
63
|
+
this.set(key, value, version);
|
|
64
|
+
return value;
|
|
65
|
+
})();
|
|
66
|
+
this._inflight.set(flightKey, flight);
|
|
67
|
+
try {
|
|
68
|
+
return await flight;
|
|
69
|
+
}
|
|
70
|
+
finally {
|
|
71
|
+
this._inflight.delete(flightKey);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
_prune(now) {
|
|
75
|
+
for (const [key, box] of this._entries) {
|
|
76
|
+
if (now - box.storedAt >= this._ttlMs) {
|
|
77
|
+
this._entries.delete(key);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
if (this._entries.size <= this._maxEntries) {
|
|
81
|
+
return;
|
|
82
|
+
}
|
|
83
|
+
const byAge = Array.from(this._entries.entries()).sort((a, b) => a[1].lastAccessMs - b[1].lastAccessMs);
|
|
84
|
+
let over = this._entries.size - this._maxEntries;
|
|
85
|
+
for (const [key] of byAge) {
|
|
86
|
+
if (over <= 0) {
|
|
87
|
+
break;
|
|
88
|
+
}
|
|
89
|
+
this._entries.delete(key);
|
|
90
|
+
over--;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
exports.VersionedTtlCache = VersionedTtlCache;
|
|
95
|
+
//# sourceMappingURL=versioned-ttl-cache.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"versioned-ttl-cache.js","sourceRoot":"","sources":["../../../src/creatio/services/versioned-ttl-cache.ts"],"names":[],"mappings":"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"}
|
|
@@ -32,11 +32,14 @@ export declare class BearerEdge {
|
|
|
32
32
|
/** Identity Service base advertised to clients. */
|
|
33
33
|
private get _identityBase();
|
|
34
34
|
constructor(config: BearerAuthConfig, baseUrl: string);
|
|
35
|
+
/** Pull the per-request credential the client/gateway supplied: a Bearer token, or a forwarded
|
|
36
|
+
* Creatio Forms-auth session (cookie + BPMCSRF). Returns undefined when neither is present. */
|
|
37
|
+
private _extractCredential;
|
|
35
38
|
private _accept;
|
|
36
39
|
private _challenge;
|
|
37
40
|
/** Delegated mode publishes RFC 9728 metadata so clients can discover the authorization server. */
|
|
38
41
|
registerRoutes(app: Express): void;
|
|
39
|
-
/** Express middleware guarding `/mcp`. Sets `req.
|
|
42
|
+
/** Express middleware guarding `/mcp`. Sets `req.credential` / `req.userKey` / `req.baseUrlOverride`. */
|
|
40
43
|
mcpAuth(): (req: Request, res: Response, next: NextFunction) => void;
|
|
41
44
|
}
|
|
42
45
|
//# sourceMappingURL=bearer-edge.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bearer-edge.d.ts","sourceRoot":"","sources":["../../../src/server/bearer/bearer-edge.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAkB,MAAM,eAAe,CAAC;AAQjE,OAAO,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"bearer-edge.d.ts","sourceRoot":"","sources":["../../../src/server/bearer/bearer-edge.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAkB,MAAM,eAAe,CAAC;AAQjE,OAAO,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAUxE,sGAAsG;AACtG,wBAAgB,8BAA8B,CAAC,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM;;;;;EAOpF;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,qBAAa,UAAU;IACtB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAmB;IAC3C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAW;IAE5C,OAAO,KAAK,YAAY,GAEvB;IAED,mDAAmD;IACnD,OAAO,KAAK,aAAa,GAExB;gBAEW,MAAM,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM;IAMrD;oGACgG;IAChG,OAAO,CAAC,kBAAkB;IAe1B,OAAO,CAAC,OAAO;IAgBf,OAAO,CAAC,UAAU;IAiBlB,mGAAmG;IAC5F,cAAc,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI;IAUzC,yGAAyG;IAClG,OAAO,KACL,KAAK,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,YAAY,KAAG,IAAI;CAqC/D"}
|
|
@@ -13,6 +13,11 @@ const base_url_guard_1 = require("./base-url-guard");
|
|
|
13
13
|
const bearer_token_1 = require("./bearer-token");
|
|
14
14
|
const PROTECTED_RESOURCE_METADATA_PATH = '/.well-known/oauth-protected-resource';
|
|
15
15
|
const BASE_URL_OVERRIDE_HEADER = 'x-creatio-base-url';
|
|
16
|
+
// Cookie passthrough (Forms-auth tenants without OAuth): the client/gateway forwards the Creatio
|
|
17
|
+
// session in a dedicated header (not the transport's own `Cookie`, which proxies mangle). BPMCSRF
|
|
18
|
+
// is read from the cookie string, or overridden by an explicit header.
|
|
19
|
+
const COOKIE_HEADER = 'x-creatio-cookie';
|
|
20
|
+
const BPMCSRF_HEADER = 'x-creatio-bpmcsrf';
|
|
16
21
|
/** RFC 9728 Protected Resource Metadata, advertising Creatio Identity as the authorization server. */
|
|
17
22
|
function buildProtectedResourceMetadata(resource, identityBase) {
|
|
18
23
|
return {
|
|
@@ -55,10 +60,28 @@ class BearerEdge {
|
|
|
55
60
|
this._baseUrl = baseUrl;
|
|
56
61
|
this._allowedBaseUrls = (0, base_url_guard_1.parseAllowedBaseUrls)((0, utils_1.env)('CREATIO_MCP_ALLOWED_BASE_URLS'));
|
|
57
62
|
}
|
|
58
|
-
|
|
63
|
+
/** Pull the per-request credential the client/gateway supplied: a Bearer token, or a forwarded
|
|
64
|
+
* Creatio Forms-auth session (cookie + BPMCSRF). Returns undefined when neither is present. */
|
|
65
|
+
_extractCredential(req) {
|
|
66
|
+
const auth = req.headers.authorization;
|
|
67
|
+
if (typeof auth === 'string' && auth.startsWith('Bearer ')) {
|
|
68
|
+
return { kind: 'bearer', token: auth.slice(7) };
|
|
69
|
+
}
|
|
70
|
+
const cookie = req.headers[COOKIE_HEADER];
|
|
71
|
+
if (typeof cookie === 'string' && cookie) {
|
|
72
|
+
const explicitCsrf = req.headers[BPMCSRF_HEADER];
|
|
73
|
+
const bpmcsrf = typeof explicitCsrf === 'string' && explicitCsrf ? explicitCsrf : (0, utils_1.extractBpmcsrf)(cookie);
|
|
74
|
+
return { kind: 'cookie', cookie, bpmcsrf };
|
|
75
|
+
}
|
|
76
|
+
return undefined;
|
|
77
|
+
}
|
|
78
|
+
_accept(req, credential, next, userKey) {
|
|
59
79
|
const r = req;
|
|
60
|
-
|
|
61
|
-
|
|
80
|
+
const resolvedUserKey = userKey ?? (credential.kind === 'bearer' ? (0, bearer_token_1.inspectBearer)(credential.token).userKey : undefined);
|
|
81
|
+
if (resolvedUserKey !== undefined) {
|
|
82
|
+
r.userKey = resolvedUserKey;
|
|
83
|
+
}
|
|
84
|
+
r.credential = credential;
|
|
62
85
|
next();
|
|
63
86
|
}
|
|
64
87
|
_challenge(req, res, reason) {
|
|
@@ -69,7 +92,7 @@ class BearerEdge {
|
|
|
69
92
|
res.status(401).json({
|
|
70
93
|
error: 'unauthorized',
|
|
71
94
|
error_description: reason === 'missing_token'
|
|
72
|
-
? 'A Creatio
|
|
95
|
+
? 'A Creatio credential is required: a Bearer token (Authorization) or a forwarded session (X-Creatio-Cookie).'
|
|
73
96
|
: `Bearer token rejected: ${reason}.`,
|
|
74
97
|
});
|
|
75
98
|
}
|
|
@@ -83,18 +106,17 @@ class BearerEdge {
|
|
|
83
106
|
res.json(buildProtectedResourceMetadata(resource, this._identityBase));
|
|
84
107
|
});
|
|
85
108
|
}
|
|
86
|
-
/** Express middleware guarding `/mcp`. Sets `req.
|
|
109
|
+
/** Express middleware guarding `/mcp`. Sets `req.credential` / `req.userKey` / `req.baseUrlOverride`. */
|
|
87
110
|
mcpAuth() {
|
|
88
111
|
return (req, res, next) => {
|
|
89
|
-
const
|
|
90
|
-
if (!
|
|
112
|
+
const credential = this._extractCredential(req);
|
|
113
|
+
if (!credential) {
|
|
91
114
|
return this._challenge(req, res, 'missing_token');
|
|
92
115
|
}
|
|
93
|
-
const token = header.slice(7);
|
|
94
116
|
if (!this._isDelegated) {
|
|
95
117
|
// gateway: a per-request instance override is honored only here (from the trusted
|
|
96
|
-
// gateway). Still validate it — the override decides where the
|
|
97
|
-
// bad value is an SSRF /
|
|
118
|
+
// gateway). Still validate it — the override decides where the credential is sent, so a
|
|
119
|
+
// bad value is an SSRF / credential-redirection lever even from a trusted source (CWE-918).
|
|
98
120
|
const baseOverride = req.headers[BASE_URL_OVERRIDE_HEADER];
|
|
99
121
|
if (typeof baseOverride === 'string' && baseOverride) {
|
|
100
122
|
if (!(0, base_url_guard_1.isAllowedBaseUrl)(baseOverride, this._allowedBaseUrls)) {
|
|
@@ -107,14 +129,18 @@ class BearerEdge {
|
|
|
107
129
|
}
|
|
108
130
|
req.baseUrlOverride = baseOverride;
|
|
109
131
|
}
|
|
110
|
-
return this._accept(req,
|
|
132
|
+
return this._accept(req, credential, next);
|
|
111
133
|
}
|
|
112
134
|
// delegated: fail fast on an obviously-expired JWT; Creatio validates the rest on the call.
|
|
113
|
-
|
|
114
|
-
if (
|
|
115
|
-
|
|
135
|
+
// A forwarded cookie session has no client-readable expiry, so it is accepted as-is.
|
|
136
|
+
if (credential.kind === 'bearer') {
|
|
137
|
+
const decoded = (0, bearer_token_1.inspectBearer)(credential.token);
|
|
138
|
+
if (decoded.isJwt && (0, bearer_token_1.isExpired)(decoded)) {
|
|
139
|
+
return this._challenge(req, res, 'token_expired');
|
|
140
|
+
}
|
|
141
|
+
return this._accept(req, credential, next, decoded.userKey);
|
|
116
142
|
}
|
|
117
|
-
return this._accept(req,
|
|
143
|
+
return this._accept(req, credential, next);
|
|
118
144
|
};
|
|
119
145
|
}
|
|
120
146
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bearer-edge.js","sourceRoot":"","sources":["../../../src/server/bearer/bearer-edge.ts"],"names":[],"mappings":";;;;;;
|
|
1
|
+
{"version":3,"file":"bearer-edge.js","sourceRoot":"","sources":["../../../src/server/bearer/bearer-edge.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { Express } from 'express';
|
|
2
|
+
export declare const LIVENESS_PATH = "/healthz";
|
|
3
|
+
export declare const READINESS_PATH = "/readyz";
|
|
4
|
+
/**
|
|
5
|
+
* Liveness + readiness endpoints for orchestrators (Kubernetes probes, load balancers).
|
|
6
|
+
*
|
|
7
|
+
* Registered BEFORE the auth and request-logging middleware so probes are unauthenticated and do
|
|
8
|
+
* not flood the logs at the probe interval. Liveness reports only that the process is up; readiness
|
|
9
|
+
* gates on a flag the app flips on once the HTTP listener accepts traffic and back off at the start
|
|
10
|
+
* of graceful shutdown — so the orchestrator drains this pod before SIGTERM tears connections down.
|
|
11
|
+
*/
|
|
12
|
+
export declare class HealthEndpoints {
|
|
13
|
+
private _ready;
|
|
14
|
+
private readonly _startedAt;
|
|
15
|
+
/** On once the server is listening; off again when shutdown begins (stop routing new traffic). */
|
|
16
|
+
setReady(ready: boolean): void;
|
|
17
|
+
register(app: Express): void;
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=health.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"health.d.ts","sourceRoot":"","sources":["../../../src/server/http/health.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAqB,MAAM,SAAS,CAAC;AAE1D,eAAO,MAAM,aAAa,aAAa,CAAC;AACxC,eAAO,MAAM,cAAc,YAAY,CAAC;AAExC;;;;;;;GAOG;AACH,qBAAa,eAAe;IAC3B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAc;IAEzC,kGAAkG;IAC3F,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI;IAI9B,QAAQ,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI;CAiBnC"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.HealthEndpoints = exports.READINESS_PATH = exports.LIVENESS_PATH = void 0;
|
|
4
|
+
const version_1 = require("../../version");
|
|
5
|
+
exports.LIVENESS_PATH = '/healthz';
|
|
6
|
+
exports.READINESS_PATH = '/readyz';
|
|
7
|
+
/**
|
|
8
|
+
* Liveness + readiness endpoints for orchestrators (Kubernetes probes, load balancers).
|
|
9
|
+
*
|
|
10
|
+
* Registered BEFORE the auth and request-logging middleware so probes are unauthenticated and do
|
|
11
|
+
* not flood the logs at the probe interval. Liveness reports only that the process is up; readiness
|
|
12
|
+
* gates on a flag the app flips on once the HTTP listener accepts traffic and back off at the start
|
|
13
|
+
* of graceful shutdown — so the orchestrator drains this pod before SIGTERM tears connections down.
|
|
14
|
+
*/
|
|
15
|
+
class HealthEndpoints {
|
|
16
|
+
_ready = false;
|
|
17
|
+
_startedAt = Date.now();
|
|
18
|
+
/** On once the server is listening; off again when shutdown begins (stop routing new traffic). */
|
|
19
|
+
setReady(ready) {
|
|
20
|
+
this._ready = ready;
|
|
21
|
+
}
|
|
22
|
+
register(app) {
|
|
23
|
+
app.get(exports.LIVENESS_PATH, (_req, res) => {
|
|
24
|
+
res.status(200).json({
|
|
25
|
+
status: 'ok',
|
|
26
|
+
name: version_1.NAME,
|
|
27
|
+
version: version_1.VERSION,
|
|
28
|
+
uptimeSec: Math.floor((Date.now() - this._startedAt) / 1000),
|
|
29
|
+
});
|
|
30
|
+
});
|
|
31
|
+
app.get(exports.READINESS_PATH, (_req, res) => {
|
|
32
|
+
if (this._ready) {
|
|
33
|
+
res.status(200).json({ status: 'ready' });
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
res.status(503).json({ status: 'starting' });
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
exports.HealthEndpoints = HealthEndpoints;
|
|
41
|
+
//# sourceMappingURL=health.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"health.js","sourceRoot":"","sources":["../../../src/server/http/health.ts"],"names":[],"mappings":";;;AAAA,2CAA8C;AAIjC,QAAA,aAAa,GAAG,UAAU,CAAC;AAC3B,QAAA,cAAc,GAAG,SAAS,CAAC;AAExC;;;;;;;GAOG;AACH,MAAa,eAAe;IACnB,MAAM,GAAG,KAAK,CAAC;IACN,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAEzC,kGAAkG;IAC3F,QAAQ,CAAC,KAAc;QAC7B,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;IACrB,CAAC;IAEM,QAAQ,CAAC,GAAY;QAC3B,GAAG,CAAC,GAAG,CAAC,qBAAa,EAAE,CAAC,IAAa,EAAE,GAAa,EAAE,EAAE;YACvD,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;gBACpB,MAAM,EAAE,IAAI;gBACZ,IAAI,EAAE,cAAI;gBACV,OAAO,EAAE,iBAAO;gBAChB,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC;aAC5D,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;QACH,GAAG,CAAC,GAAG,CAAC,sBAAc,EAAE,CAAC,IAAa,EAAE,GAAa,EAAE,EAAE;YACxD,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;gBACjB,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;gBAC1C,OAAO;YACR,CAAC;YACD,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC;QAC9C,CAAC,CAAC,CAAC;IACJ,CAAC;CACD;AA1BD,0CA0BC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http-server.d.ts","sourceRoot":"","sources":["../../../src/server/http/http-server.ts"],"names":[],"mappings":"AAGA,OAAO,OAAO,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"http-server.d.ts","sourceRoot":"","sources":["../../../src/server/http/http-server.ts"],"names":[],"mappings":"AAGA,OAAO,OAAO,MAAM,SAAS,CAAC;AAU9B,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAC1D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAErC,qBAAa,UAAU;IACtB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAU;IAC5C,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,mBAAmB,CAAiB;IAC5D,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAa;IAClC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAqB;IAClD,OAAO,CAAC,IAAI,CAAe;IAC3B,OAAO,CAAC,aAAa,CAA6B;IAClD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAA2B;IAC3D,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAwB;IACpD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAyB;IACjD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAc;IAC3C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAuB;IAEjD,IAAW,GAAG,IAAI,OAAO,CAAC,OAAO,CAEhC;gBAEW,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,mBAAmB;IAWxD,OAAO,CAAC,gBAAgB;IAaxB,OAAO,CAAC,YAAY;IAKpB,OAAO,CAAC,kBAAkB;IAMnB,KAAK,CAAC,IAAI,EAAE,MAAM;IA6BZ,IAAI;CAuCjB"}
|
|
@@ -8,6 +8,7 @@ const express_1 = __importDefault(require("express"));
|
|
|
8
8
|
const log_1 = __importDefault(require("../../log"));
|
|
9
9
|
const sessions_1 = require("../../sessions");
|
|
10
10
|
const auth_edge_1 = require("./auth-edge");
|
|
11
|
+
const health_1 = require("./health");
|
|
11
12
|
const mcp_handlers_1 = require("./mcp-handlers");
|
|
12
13
|
const middleware_1 = require("./middleware");
|
|
13
14
|
class HttpServer {
|
|
@@ -20,6 +21,7 @@ class HttpServer {
|
|
|
20
21
|
_cleanupTimer;
|
|
21
22
|
_sessionContext = sessions_1.SessionContext.instance;
|
|
22
23
|
_middleware = new middleware_1.HttpMiddleware();
|
|
24
|
+
_health = new health_1.HealthEndpoints();
|
|
23
25
|
_mcpHandlers;
|
|
24
26
|
_authEdge;
|
|
25
27
|
get app() {
|
|
@@ -29,6 +31,9 @@ class HttpServer {
|
|
|
29
31
|
this._server = server;
|
|
30
32
|
this._mcpHandlers = new mcp_handlers_1.McpHandlers(this._server);
|
|
31
33
|
this._authEdge = (0, auth_edge_1.createAuthEdge)(config, this._sessionContext);
|
|
34
|
+
// Health probes are registered first so they sit ahead of the auth + request-logging
|
|
35
|
+
// middleware: probes stay unauthenticated and never spam the request log at probe cadence.
|
|
36
|
+
this._health.register(this._app);
|
|
32
37
|
this._setupMiddleware();
|
|
33
38
|
this._setupRoutes();
|
|
34
39
|
}
|
|
@@ -56,6 +61,7 @@ class HttpServer {
|
|
|
56
61
|
start(port) {
|
|
57
62
|
return new Promise((resolve, reject) => {
|
|
58
63
|
this._srv = this._app.listen(port, () => {
|
|
64
|
+
this._health.setReady(true);
|
|
59
65
|
log_1.default.httpStart(port);
|
|
60
66
|
resolve();
|
|
61
67
|
});
|
|
@@ -78,6 +84,9 @@ class HttpServer {
|
|
|
78
84
|
});
|
|
79
85
|
}
|
|
80
86
|
async stop() {
|
|
87
|
+
// Fail readiness immediately so the orchestrator drains traffic from this pod before we
|
|
88
|
+
// start closing connections below.
|
|
89
|
+
this._health.setReady(false);
|
|
81
90
|
if (this._cleanupTimer) {
|
|
82
91
|
clearInterval(this._cleanupTimer);
|
|
83
92
|
this._cleanupTimer = undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http-server.js","sourceRoot":"","sources":["../../../src/server/http/http-server.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"http-server.js","sourceRoot":"","sources":["../../../src/server/http/http-server.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/server/http/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/server/http/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC"}
|
|
@@ -14,6 +14,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./health"), exports);
|
|
17
18
|
__exportStar(require("./http-server"), exports);
|
|
18
19
|
__exportStar(require("./mcp-handlers"), exports);
|
|
19
20
|
__exportStar(require("./middleware"), exports);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/server/http/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,gDAA8B;AAC9B,iDAA+B;AAC/B,+CAA6B"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/server/http/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAAyB;AACzB,gDAA8B;AAC9B,iDAA+B;AAC/B,+CAA6B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp-handlers.d.ts","sourceRoot":"","sources":["../../../src/server/http/mcp-handlers.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"mcp-handlers.d.ts","sourceRoot":"","sources":["../../../src/server/http/mcp-handlers.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AACrC,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAEjD,qBAAa,WAAW;IACvB,OAAO,CAAC,QAAQ,CAAC,eAAe,CAA2B;IAC3D,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;gBAErB,MAAM,EAAE,MAAM;IAIb,aAAa,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IA8DzD,oBAAoB,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;CAuB7E"}
|
|
@@ -67,8 +67,8 @@ class McpHandlers {
|
|
|
67
67
|
}
|
|
68
68
|
const session = this._sessionContext.getSession(sessionId);
|
|
69
69
|
const userKey = bearerUserKey || session?.userKey;
|
|
70
|
-
const
|
|
71
|
-
await (0, utils_1.runWithContext)({ userKey, sessionId,
|
|
70
|
+
const credential = req.credential;
|
|
71
|
+
await (0, utils_1.runWithContext)({ userKey, sessionId, credential, baseUrlOverride }, async () => {
|
|
72
72
|
// Kick the per-tenant capability probe from inside the request context so its Creatio
|
|
73
73
|
// calls carry this caller's identity (broker mode has no user otherwise). Non-blocking.
|
|
74
74
|
this._server.ensureCapabilitiesProbed(baseUrlOverride);
|
|
@@ -91,9 +91,9 @@ class McpHandlers {
|
|
|
91
91
|
// caller-supplied ?userKey=/x-user-key, which must not override an authenticated
|
|
92
92
|
// identity (CWE-639).
|
|
93
93
|
const userKey = req.userKey || session?.userKey || (0, utils_1.getUserKeyFromRequest)(req);
|
|
94
|
-
const
|
|
94
|
+
const credential = req.credential;
|
|
95
95
|
const baseUrlOverride = req.baseUrlOverride;
|
|
96
|
-
await (0, utils_1.runWithContext)({ userKey, sessionId,
|
|
96
|
+
await (0, utils_1.runWithContext)({ userKey, sessionId, credential, baseUrlOverride }, async () => transport.handleRequest(req, res));
|
|
97
97
|
}
|
|
98
98
|
}
|
|
99
99
|
exports.McpHandlers = McpHandlers;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp-handlers.js","sourceRoot":"","sources":["../../../src/server/http/mcp-handlers.ts"],"names":[],"mappings":";;;;;;AAAA,6CAAyC;AAEzC,0FAAmG;AACnG,iEAAyE;AAEzE,oDAA4B;AAC5B,6CAAgD;AAChD,
|
|
1
|
+
{"version":3,"file":"mcp-handlers.js","sourceRoot":"","sources":["../../../src/server/http/mcp-handlers.ts"],"names":[],"mappings":";;;;;;AAAA,6CAAyC;AAEzC,0FAAmG;AACnG,iEAAyE;AAEzE,oDAA4B;AAC5B,6CAAgD;AAChD,uCAMqB;AAKrB,MAAa,WAAW;IACN,eAAe,GAAG,yBAAc,CAAC,QAAQ,CAAC;IAC1C,OAAO,CAAS;IAEjC,YAAY,MAAc;QACzB,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;IACvB,CAAC;IAEM,KAAK,CAAC,aAAa,CAAC,GAAY,EAAE,GAAa;QACrD,MAAM,SAAS,GAAG,IAAA,+BAAuB,EAAC,GAAG,CAAC,CAAC;QAC/C,MAAM,aAAa,GAAI,GAAW,CAAC,OAAO,CAAC;QAC3C,4FAA4F;QAC5F,sEAAsE;QACtE,MAAM,eAAe,GAAI,GAAW,CAAC,eAAqC,CAAC;QAC3E,IAAI,SAAoD,CAAC;QACzD,MAAM,QAAQ,GAAG,IAAA,mBAAW,EAAC,GAAG,CAAC,CAAC;QAClC,IAAI,SAAS,IAAI,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAC7D,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;YAC3D,SAAS,GAAG,OAAO,EAAE,SAAS,CAAC;YAC/B,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;gBAClC,IAAI,CAAC,eAAe,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC;gBACpD,aAAG,CAAC,cAAc,CAAC,SAAS,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;YACjD,CAAC;QACF,CAAC;aAAM,IAAI,CAAC,SAAS,IAAI,IAAA,8BAAmB,EAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YACxD,SAAS,GAAG,IAAI,iDAA6B,CAAC;gBAC7C,kBAAkB,EAAE,GAAG,EAAE,CAAC,IAAA,wBAAU,GAAE;gBACtC,oBAAoB,EAAE,CAAC,GAAG,EAAE,EAAE;oBAC7B,IAAI,SAAS,EAAE,CAAC;wBACf,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,aAAa,CACjD,GAAG,EACH,aAAa,EACb,QAAQ,CACR,CAAC;wBACF,IAAI,CAAC,eAAe,CAAC,mBAAmB,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;wBACzD,IAAI,CAAC,eAAe,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC;wBAC9C,aAAG,CAAC,cAAc,CAAC,GAAG,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;oBAC3C,CAAC;gBACF,CAAC;aACD,CAAC,CAAC;YACH,oFAAoF;YACpF,mFAAmF;YACnF,uEAAuE;YACvE,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,eAAe,CAAC,CAAC;YAC9D,SAAS,CAAC,OAAO,GAAG,GAAG,EAAE;gBACxB,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC;gBACvC,IAAI,SAAS,EAAE,SAAS,EAAE,CAAC;oBAC1B,aAAG,CAAC,iBAAiB,CAAC,SAAS,CAAC,SAAS,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;oBAC7D,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;gBACzD,CAAC;YACF,CAAC,CAAC;YACF,MAAM,GAAG,CAAC,OAAO,CAAC,SAAgB,CAAC,CAAC;QACrC,CAAC;aAAM,CAAC;YACP,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;gBACpB,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,2CAA2C,EAAE;gBAC7E,EAAE,EAAE,IAAI;aACR,CAAC,CAAC;YACH,OAAO;QACR,CAAC;QACD,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;QAC3D,MAAM,OAAO,GAAG,aAAa,IAAI,OAAO,EAAE,OAAO,CAAC;QAClD,MAAM,UAAU,GAAI,GAAW,CAAC,UAA4C,CAAC;QAC7E,MAAM,IAAA,sBAAc,EAAC,EAAE,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,eAAe,EAAE,EAAE,KAAK,IAAI,EAAE;YACpF,sFAAsF;YACtF,wFAAwF;YACxF,IAAI,CAAC,OAAO,CAAC,wBAAwB,CAAC,eAAe,CAAC,CAAC;YACvD,OAAO,SAAU,CAAC,aAAa,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;QACrD,CAAC,CAAC,CAAC;IACJ,CAAC;IAEM,KAAK,CAAC,oBAAoB,CAAC,GAAY,EAAE,GAAa;QAC5D,MAAM,SAAS,GAAG,GAAG,CAAC,OAAO,CAAC,gBAAgB,CAAuB,CAAC;QACtE,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAC/D,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC;YACtD,OAAO;QACR,CAAC;QACD,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;QAC3D,MAAM,SAAS,GAAG,OAAO,EAAE,SAAS,CAAC;QACrC,IAAI,CAAC,SAAS,EAAE,CAAC;YAChB,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;YACjD,OAAO;QACR,CAAC;QACD,8EAA8E;QAC9E,iFAAiF;QACjF,sBAAsB;QACtB,MAAM,OAAO,GACX,GAAW,CAAC,OAAO,IAAI,OAAO,EAAE,OAAO,IAAI,IAAA,6BAAqB,EAAC,GAAU,CAAC,CAAC;QAC/E,MAAM,UAAU,GAAI,GAAW,CAAC,UAA4C,CAAC;QAC7E,MAAM,eAAe,GAAI,GAAW,CAAC,eAAqC,CAAC;QAC3E,MAAM,IAAA,sBAAc,EAAC,EAAE,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,eAAe,EAAE,EAAE,KAAK,IAAI,EAAE,CACpF,SAAS,CAAC,aAAa,CAAC,GAAG,EAAE,GAAG,CAAC,CACjC,CAAC;IACH,CAAC;CACD;AA7FD,kCA6FC"}
|
package/dist/utils/context.d.ts
CHANGED
|
@@ -1,12 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A Creatio credential supplied per-request by an external party in the stateless passthrough modes
|
|
3
|
+
* (delegated / gateway): the MCP stores nothing and just forwards it, letting Creatio validate.
|
|
4
|
+
* `bearer` is an OAuth access token; `cookie` is a Forms-auth session (the raw Cookie header) plus
|
|
5
|
+
* its BPMCSRF anti-forgery token. The union is open to more shapes (e.g. basic) without touching
|
|
6
|
+
* the callers that only branch on `kind`.
|
|
7
|
+
*/
|
|
8
|
+
export type InjectedCredential = {
|
|
9
|
+
kind: 'bearer';
|
|
10
|
+
token: string;
|
|
11
|
+
} | {
|
|
12
|
+
kind: 'cookie';
|
|
13
|
+
cookie: string;
|
|
14
|
+
bpmcsrf?: string | undefined;
|
|
15
|
+
};
|
|
1
16
|
export type RequestContext = {
|
|
2
17
|
userKey?: string | undefined;
|
|
3
18
|
sessionId?: string | undefined;
|
|
4
19
|
/**
|
|
5
|
-
* The
|
|
6
|
-
*
|
|
7
|
-
*
|
|
20
|
+
* The credential the client (delegated) or gateway supplied for this request; the bearer auth
|
|
21
|
+
* provider forwards it straight to Creatio. Absent for legacy / client-credentials (those
|
|
22
|
+
* self-authenticate with one configured identity) and for broker (the MCP owns the token).
|
|
8
23
|
*/
|
|
9
|
-
|
|
24
|
+
credential?: InjectedCredential | undefined;
|
|
10
25
|
/** Optional per-request Creatio instance override (gateway multi-tenant), from X-Creatio-Base-Url. */
|
|
11
26
|
baseUrlOverride?: string | undefined;
|
|
12
27
|
};
|
|
@@ -14,8 +29,8 @@ export declare function runWithContext<T>(ctx: Partial<RequestContext>, fn: () =
|
|
|
14
29
|
export declare function getRequestContext(): RequestContext | undefined;
|
|
15
30
|
export declare function getUserKey(): string | undefined;
|
|
16
31
|
export declare function getSessionId(): string | undefined;
|
|
17
|
-
/** The
|
|
18
|
-
export declare function
|
|
32
|
+
/** The per-request injected Creatio credential (stateless delegated/gateway passthrough), if any. */
|
|
33
|
+
export declare function getInjectedCredential(): InjectedCredential | undefined;
|
|
19
34
|
/** The per-request Creatio base-URL override (gateway multi-tenant), if any. */
|
|
20
35
|
export declare function getBaseUrlOverride(): string | undefined;
|
|
21
36
|
export declare function getEffectiveUserKey(): string | undefined;
|