@kya-os/mcp-i-core 1.2.2-canary.24 → 1.2.2-canary.25
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/dist/cache/oauth-config-cache.d.ts +69 -0
- package/dist/cache/oauth-config-cache.d.ts.map +1 -0
- package/dist/cache/oauth-config-cache.js +76 -0
- package/dist/cache/oauth-config-cache.js.map +1 -0
- package/dist/identity/idp-token-resolver.d.ts +53 -0
- package/dist/identity/idp-token-resolver.d.ts.map +1 -0
- package/dist/identity/idp-token-resolver.js +108 -0
- package/dist/identity/idp-token-resolver.js.map +1 -0
- package/dist/identity/idp-token-storage.interface.d.ts +42 -0
- package/dist/identity/idp-token-storage.interface.d.ts.map +1 -0
- package/dist/identity/idp-token-storage.interface.js +12 -0
- package/dist/identity/idp-token-storage.interface.js.map +1 -0
- package/dist/index.d.ts +20 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +36 -1
- package/dist/index.js.map +1 -1
- package/dist/services/access-control.service.d.ts.map +1 -1
- package/dist/services/access-control.service.js +7 -0
- package/dist/services/access-control.service.js.map +1 -1
- package/dist/services/batch-delegation.service.d.ts +53 -0
- package/dist/services/batch-delegation.service.d.ts.map +1 -0
- package/dist/services/batch-delegation.service.js +95 -0
- package/dist/services/batch-delegation.service.js.map +1 -0
- package/dist/services/oauth-config.service.d.ts +53 -0
- package/dist/services/oauth-config.service.d.ts.map +1 -0
- package/dist/services/oauth-config.service.js +117 -0
- package/dist/services/oauth-config.service.js.map +1 -0
- package/dist/services/oauth-provider-registry.d.ts +77 -0
- package/dist/services/oauth-provider-registry.d.ts.map +1 -0
- package/dist/services/oauth-provider-registry.js +112 -0
- package/dist/services/oauth-provider-registry.js.map +1 -0
- package/dist/services/oauth-service.d.ts +77 -0
- package/dist/services/oauth-service.d.ts.map +1 -0
- package/dist/services/oauth-service.js +348 -0
- package/dist/services/oauth-service.js.map +1 -0
- package/dist/services/oauth-token-retrieval.service.d.ts +49 -0
- package/dist/services/oauth-token-retrieval.service.d.ts.map +1 -0
- package/dist/services/oauth-token-retrieval.service.js +150 -0
- package/dist/services/oauth-token-retrieval.service.js.map +1 -0
- package/dist/services/provider-resolver.d.ts +48 -0
- package/dist/services/provider-resolver.d.ts.map +1 -0
- package/dist/services/provider-resolver.js +120 -0
- package/dist/services/provider-resolver.js.map +1 -0
- package/dist/services/provider-validator.d.ts +55 -0
- package/dist/services/provider-validator.d.ts.map +1 -0
- package/dist/services/provider-validator.js +135 -0
- package/dist/services/provider-validator.js.map +1 -0
- package/dist/services/tool-context-builder.d.ts +57 -0
- package/dist/services/tool-context-builder.d.ts.map +1 -0
- package/dist/services/tool-context-builder.js +125 -0
- package/dist/services/tool-context-builder.js.map +1 -0
- package/dist/services/tool-protection.service.d.ts.map +1 -1
- package/dist/services/tool-protection.service.js +27 -0
- package/dist/services/tool-protection.service.js.map +1 -1
- package/dist/types/oauth-required-error.d.ts +40 -0
- package/dist/types/oauth-required-error.d.ts.map +1 -0
- package/dist/types/oauth-required-error.js +40 -0
- package/dist/types/oauth-required-error.js.map +1 -0
- package/dist/utils/did-helpers.d.ts +33 -0
- package/dist/utils/did-helpers.d.ts.map +1 -1
- package/dist/utils/did-helpers.js +40 -0
- package/dist/utils/did-helpers.js.map +1 -1
- package/dist/utils/index.d.ts +1 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +1 -0
- package/dist/utils/index.js.map +1 -1
- package/package.json +7 -2
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Platform-agnostic cache interface for OAuth provider configurations
|
|
3
|
+
*
|
|
4
|
+
* This interface allows different runtime adapters to provide their own
|
|
5
|
+
* caching implementations (e.g., in-memory for Node.js, KV for Cloudflare)
|
|
6
|
+
*
|
|
7
|
+
* @package @kya-os/mcp-i-core
|
|
8
|
+
*/
|
|
9
|
+
import type { OAuthConfig } from "@kya-os/contracts/config";
|
|
10
|
+
/**
|
|
11
|
+
* Cache interface for storing and retrieving OAuth provider configurations
|
|
12
|
+
*/
|
|
13
|
+
export interface OAuthConfigCache {
|
|
14
|
+
/**
|
|
15
|
+
* Retrieve a cached OAuth configuration
|
|
16
|
+
* @param key Cache key (typically projectId)
|
|
17
|
+
* @returns Cached config or null if not found/expired
|
|
18
|
+
*/
|
|
19
|
+
get(key: string): Promise<OAuthConfig | null>;
|
|
20
|
+
/**
|
|
21
|
+
* Store an OAuth configuration in cache
|
|
22
|
+
* @param key Cache key (typically projectId)
|
|
23
|
+
* @param value OAuth configuration to cache
|
|
24
|
+
* @param ttl Time-to-live in milliseconds
|
|
25
|
+
*/
|
|
26
|
+
set(key: string, value: OAuthConfig, ttl: number): Promise<void>;
|
|
27
|
+
/**
|
|
28
|
+
* Clear all cached entries
|
|
29
|
+
*/
|
|
30
|
+
clear(): Promise<void>;
|
|
31
|
+
/**
|
|
32
|
+
* Remove a specific cache entry
|
|
33
|
+
* @param key Cache key to remove
|
|
34
|
+
*/
|
|
35
|
+
delete(key: string): Promise<void>;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* In-memory cache implementation
|
|
39
|
+
*
|
|
40
|
+
* Suitable for:
|
|
41
|
+
* - Node.js runtimes
|
|
42
|
+
* - Development/testing
|
|
43
|
+
* - Single-instance deployments
|
|
44
|
+
*
|
|
45
|
+
* NOT suitable for:
|
|
46
|
+
* - Multi-instance deployments (cache not shared)
|
|
47
|
+
* - Serverless environments (state not persisted)
|
|
48
|
+
*/
|
|
49
|
+
export declare class InMemoryOAuthConfigCache implements OAuthConfigCache {
|
|
50
|
+
private cache;
|
|
51
|
+
get(key: string): Promise<OAuthConfig | null>;
|
|
52
|
+
set(key: string, value: OAuthConfig, ttl: number): Promise<void>;
|
|
53
|
+
clear(): Promise<void>;
|
|
54
|
+
delete(key: string): Promise<void>;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* No-op cache implementation (disables caching)
|
|
58
|
+
*
|
|
59
|
+
* Use when:
|
|
60
|
+
* - You want to disable caching entirely
|
|
61
|
+
* - Testing scenarios that require fresh data
|
|
62
|
+
*/
|
|
63
|
+
export declare class NoOpOAuthConfigCache implements OAuthConfigCache {
|
|
64
|
+
get(_key: string): Promise<OAuthConfig | null>;
|
|
65
|
+
set(_key: string, _value: OAuthConfig, _ttl: number): Promise<void>;
|
|
66
|
+
clear(): Promise<void>;
|
|
67
|
+
delete(_key: string): Promise<void>;
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=oauth-config-cache.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"oauth-config-cache.d.ts","sourceRoot":"","sources":["../../src/cache/oauth-config-cache.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAE5D;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;;;OAIG;IACH,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;IAE9C;;;;;OAKG;IACH,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEjE;;OAEG;IACH,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAEvB;;;OAGG;IACH,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACpC;AAED;;;;;;;;;;;GAWG;AACH,qBAAa,wBAAyB,YAAW,gBAAgB;IAC/D,OAAO,CAAC,KAAK,CAGT;IAEE,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;IAgB7C,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAShE,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAItB,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAGzC;AAED;;;;;;GAMG;AACH,qBAAa,oBAAqB,YAAW,gBAAgB;IACrD,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;IAI9C,GAAG,CACP,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,WAAW,EACnB,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,IAAI,CAAC;IAIV,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAItB,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAG1C"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Platform-agnostic cache interface for OAuth provider configurations
|
|
4
|
+
*
|
|
5
|
+
* This interface allows different runtime adapters to provide their own
|
|
6
|
+
* caching implementations (e.g., in-memory for Node.js, KV for Cloudflare)
|
|
7
|
+
*
|
|
8
|
+
* @package @kya-os/mcp-i-core
|
|
9
|
+
*/
|
|
10
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
|
+
exports.NoOpOAuthConfigCache = exports.InMemoryOAuthConfigCache = void 0;
|
|
12
|
+
/**
|
|
13
|
+
* In-memory cache implementation
|
|
14
|
+
*
|
|
15
|
+
* Suitable for:
|
|
16
|
+
* - Node.js runtimes
|
|
17
|
+
* - Development/testing
|
|
18
|
+
* - Single-instance deployments
|
|
19
|
+
*
|
|
20
|
+
* NOT suitable for:
|
|
21
|
+
* - Multi-instance deployments (cache not shared)
|
|
22
|
+
* - Serverless environments (state not persisted)
|
|
23
|
+
*/
|
|
24
|
+
class InMemoryOAuthConfigCache {
|
|
25
|
+
cache = new Map();
|
|
26
|
+
async get(key) {
|
|
27
|
+
const entry = this.cache.get(key);
|
|
28
|
+
if (!entry) {
|
|
29
|
+
return null;
|
|
30
|
+
}
|
|
31
|
+
// Check if expired
|
|
32
|
+
if (Date.now() > entry.expiresAt) {
|
|
33
|
+
this.cache.delete(key);
|
|
34
|
+
return null;
|
|
35
|
+
}
|
|
36
|
+
return entry.value;
|
|
37
|
+
}
|
|
38
|
+
async set(key, value, ttl) {
|
|
39
|
+
// If TTL is <= 0, don't store (entry would be immediately expired)
|
|
40
|
+
if (ttl <= 0) {
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
const expiresAt = Date.now() + ttl;
|
|
44
|
+
this.cache.set(key, { value, expiresAt });
|
|
45
|
+
}
|
|
46
|
+
async clear() {
|
|
47
|
+
this.cache.clear();
|
|
48
|
+
}
|
|
49
|
+
async delete(key) {
|
|
50
|
+
this.cache.delete(key);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
exports.InMemoryOAuthConfigCache = InMemoryOAuthConfigCache;
|
|
54
|
+
/**
|
|
55
|
+
* No-op cache implementation (disables caching)
|
|
56
|
+
*
|
|
57
|
+
* Use when:
|
|
58
|
+
* - You want to disable caching entirely
|
|
59
|
+
* - Testing scenarios that require fresh data
|
|
60
|
+
*/
|
|
61
|
+
class NoOpOAuthConfigCache {
|
|
62
|
+
async get(_key) {
|
|
63
|
+
return null;
|
|
64
|
+
}
|
|
65
|
+
async set(_key, _value, _ttl) {
|
|
66
|
+
// No-op
|
|
67
|
+
}
|
|
68
|
+
async clear() {
|
|
69
|
+
// No-op
|
|
70
|
+
}
|
|
71
|
+
async delete(_key) {
|
|
72
|
+
// No-op
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
exports.NoOpOAuthConfigCache = NoOpOAuthConfigCache;
|
|
76
|
+
//# sourceMappingURL=oauth-config-cache.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"oauth-config-cache.js","sourceRoot":"","sources":["../../src/cache/oauth-config-cache.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;;AAmCH;;;;;;;;;;;GAWG;AACH,MAAa,wBAAwB;IAC3B,KAAK,GAAG,IAAI,GAAG,EAGpB,CAAC;IAEJ,KAAK,CAAC,GAAG,CAAC,GAAW;QACnB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAElC,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,IAAI,CAAC;QACd,CAAC;QAED,mBAAmB;QACnB,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC;YACjC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACvB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,KAAK,CAAC,KAAK,CAAC;IACrB,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,GAAW,EAAE,KAAkB,EAAE,GAAW;QACpD,mEAAmE;QACnE,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC;YACb,OAAO;QACT,CAAC;QACD,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC;QACnC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;IAC5C,CAAC;IAED,KAAK,CAAC,KAAK;QACT,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;IACrB,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,GAAW;QACtB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACzB,CAAC;CACF;AAtCD,4DAsCC;AAED;;;;;;GAMG;AACH,MAAa,oBAAoB;IAC/B,KAAK,CAAC,GAAG,CAAC,IAAY;QACpB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,GAAG,CACP,IAAY,EACZ,MAAmB,EACnB,IAAY;QAEZ,QAAQ;IACV,CAAC;IAED,KAAK,CAAC,KAAK;QACT,QAAQ;IACV,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,IAAY;QACvB,QAAQ;IACV,CAAC;CACF;AApBD,oDAoBC"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* IDP Token Resolver
|
|
3
|
+
*
|
|
4
|
+
* Resolves User DID to IDP access token (MH-7 requirement).
|
|
5
|
+
* Handles token lookup, expiration checking, and automatic refresh.
|
|
6
|
+
*
|
|
7
|
+
* @package @kya-os/mcp-i-core
|
|
8
|
+
*/
|
|
9
|
+
import type { IdpTokens } from "@kya-os/contracts/config";
|
|
10
|
+
import type { IIdpTokenStorage } from "./idp-token-storage.interface.js";
|
|
11
|
+
export interface IdpTokenResolverConfig {
|
|
12
|
+
/** Token storage implementation */
|
|
13
|
+
tokenStorage: IIdpTokenStorage;
|
|
14
|
+
/** OAuth service for token refresh */
|
|
15
|
+
oauthService: {
|
|
16
|
+
refreshToken(provider: string, refreshToken: string): Promise<IdpTokens | null>;
|
|
17
|
+
};
|
|
18
|
+
/** Optional logger callback for diagnostics */
|
|
19
|
+
logger?: (message: string, data?: unknown) => void;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Service for resolving User DID to IDP access token
|
|
23
|
+
*
|
|
24
|
+
* MH-7 Requirement: resolveTokenFromDid(userDid: string): Promise<string>
|
|
25
|
+
*
|
|
26
|
+
* This service implements the core MH-7 functionality:
|
|
27
|
+
* - Resolves User DID to IDP access token
|
|
28
|
+
* - Handles token expiration and automatic refresh
|
|
29
|
+
* - Supports multiple IDP providers
|
|
30
|
+
*/
|
|
31
|
+
export declare class IdpTokenResolver {
|
|
32
|
+
private config;
|
|
33
|
+
constructor(config: IdpTokenResolverConfig);
|
|
34
|
+
/**
|
|
35
|
+
* Resolve User DID to IDP access token
|
|
36
|
+
*
|
|
37
|
+
* MH-7 Requirement: resolveTokenFromDid(userDid: string): Promise<string>
|
|
38
|
+
*
|
|
39
|
+
* Flow:
|
|
40
|
+
* 1. Look up token from storage
|
|
41
|
+
* 2. Check expiration
|
|
42
|
+
* 3. Auto-refresh if expired and refresh_token available
|
|
43
|
+
* 4. Update storage after refresh
|
|
44
|
+
* 5. Return access_token or null
|
|
45
|
+
*
|
|
46
|
+
* @param userDid - User DID to resolve
|
|
47
|
+
* @param provider - OAuth provider name (e.g., "github", "google")
|
|
48
|
+
* @param scopes - Required scopes for token
|
|
49
|
+
* @returns Access token or null if not found/expired
|
|
50
|
+
*/
|
|
51
|
+
resolveTokenFromDid(userDid: string, provider: string, scopes: string[]): Promise<string | null>;
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=idp-token-resolver.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"idp-token-resolver.d.ts","sourceRoot":"","sources":["../../src/identity/idp-token-resolver.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AAEzE,MAAM,WAAW,sBAAsB;IACrC,mCAAmC;IACnC,YAAY,EAAE,gBAAgB,CAAC;IAE/B,sCAAsC;IACtC,YAAY,EAAE;QACZ,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC;KACjF,CAAC;IAEF,+CAA+C;IAC/C,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;CACpD;AAED;;;;;;;;;GASG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,MAAM,CAEZ;gBAEU,MAAM,EAAE,sBAAsB;IAQ1C;;;;;;;;;;;;;;;;OAgBG;IACG,mBAAmB,CACvB,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EAAE,GACf,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;CA4E1B"}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* IDP Token Resolver
|
|
4
|
+
*
|
|
5
|
+
* Resolves User DID to IDP access token (MH-7 requirement).
|
|
6
|
+
* Handles token lookup, expiration checking, and automatic refresh.
|
|
7
|
+
*
|
|
8
|
+
* @package @kya-os/mcp-i-core
|
|
9
|
+
*/
|
|
10
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
|
+
exports.IdpTokenResolver = void 0;
|
|
12
|
+
/**
|
|
13
|
+
* Service for resolving User DID to IDP access token
|
|
14
|
+
*
|
|
15
|
+
* MH-7 Requirement: resolveTokenFromDid(userDid: string): Promise<string>
|
|
16
|
+
*
|
|
17
|
+
* This service implements the core MH-7 functionality:
|
|
18
|
+
* - Resolves User DID to IDP access token
|
|
19
|
+
* - Handles token expiration and automatic refresh
|
|
20
|
+
* - Supports multiple IDP providers
|
|
21
|
+
*/
|
|
22
|
+
class IdpTokenResolver {
|
|
23
|
+
config;
|
|
24
|
+
constructor(config) {
|
|
25
|
+
this.config = {
|
|
26
|
+
tokenStorage: config.tokenStorage,
|
|
27
|
+
oauthService: config.oauthService,
|
|
28
|
+
logger: config.logger || (() => { }),
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Resolve User DID to IDP access token
|
|
33
|
+
*
|
|
34
|
+
* MH-7 Requirement: resolveTokenFromDid(userDid: string): Promise<string>
|
|
35
|
+
*
|
|
36
|
+
* Flow:
|
|
37
|
+
* 1. Look up token from storage
|
|
38
|
+
* 2. Check expiration
|
|
39
|
+
* 3. Auto-refresh if expired and refresh_token available
|
|
40
|
+
* 4. Update storage after refresh
|
|
41
|
+
* 5. Return access_token or null
|
|
42
|
+
*
|
|
43
|
+
* @param userDid - User DID to resolve
|
|
44
|
+
* @param provider - OAuth provider name (e.g., "github", "google")
|
|
45
|
+
* @param scopes - Required scopes for token
|
|
46
|
+
* @returns Access token or null if not found/expired
|
|
47
|
+
*/
|
|
48
|
+
async resolveTokenFromDid(userDid, provider, scopes) {
|
|
49
|
+
// 1. Look up token from storage
|
|
50
|
+
const storedToken = await this.config.tokenStorage.getToken(userDid, provider, scopes);
|
|
51
|
+
if (!storedToken) {
|
|
52
|
+
this.config.logger("[IdpTokenResolver] Token not found", {
|
|
53
|
+
userDid: userDid.substring(0, 20) + "...",
|
|
54
|
+
provider,
|
|
55
|
+
scopes,
|
|
56
|
+
});
|
|
57
|
+
return null;
|
|
58
|
+
}
|
|
59
|
+
// 2. Check expiration
|
|
60
|
+
const now = Date.now();
|
|
61
|
+
if (storedToken.expires_at < now) {
|
|
62
|
+
this.config.logger("[IdpTokenResolver] Token expired, attempting refresh", {
|
|
63
|
+
userDid: userDid.substring(0, 20) + "...",
|
|
64
|
+
provider,
|
|
65
|
+
expiresAt: new Date(storedToken.expires_at).toISOString(),
|
|
66
|
+
hasRefreshToken: !!storedToken.refresh_token,
|
|
67
|
+
});
|
|
68
|
+
// 3. Refresh if refresh_token available
|
|
69
|
+
if (storedToken.refresh_token) {
|
|
70
|
+
const refreshed = await this.config.oauthService.refreshToken(provider, storedToken.refresh_token);
|
|
71
|
+
if (refreshed) {
|
|
72
|
+
// 4. Update storage with new tokens
|
|
73
|
+
await this.config.tokenStorage.storeToken(userDid, provider, scopes, refreshed);
|
|
74
|
+
this.config.logger("[IdpTokenResolver] Token refreshed successfully", {
|
|
75
|
+
userDid: userDid.substring(0, 20) + "...",
|
|
76
|
+
provider,
|
|
77
|
+
expiresAt: new Date(refreshed.expires_at).toISOString(),
|
|
78
|
+
});
|
|
79
|
+
// 5. Return new access_token
|
|
80
|
+
return refreshed.access_token;
|
|
81
|
+
}
|
|
82
|
+
else {
|
|
83
|
+
this.config.logger("[IdpTokenResolver] Token refresh failed", {
|
|
84
|
+
userDid: userDid.substring(0, 20) + "...",
|
|
85
|
+
provider,
|
|
86
|
+
});
|
|
87
|
+
return null;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
else {
|
|
91
|
+
this.config.logger("[IdpTokenResolver] Token expired and no refresh token", {
|
|
92
|
+
userDid: userDid.substring(0, 20) + "...",
|
|
93
|
+
provider,
|
|
94
|
+
});
|
|
95
|
+
return null;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
// 4. Return valid access_token
|
|
99
|
+
this.config.logger("[IdpTokenResolver] Token resolved successfully", {
|
|
100
|
+
userDid: userDid.substring(0, 20) + "...",
|
|
101
|
+
provider,
|
|
102
|
+
expiresAt: new Date(storedToken.expires_at).toISOString(),
|
|
103
|
+
});
|
|
104
|
+
return storedToken.access_token;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
exports.IdpTokenResolver = IdpTokenResolver;
|
|
108
|
+
//# sourceMappingURL=idp-token-resolver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"idp-token-resolver.js","sourceRoot":"","sources":["../../src/identity/idp-token-resolver.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* IDP Token Storage Interface
|
|
3
|
+
*
|
|
4
|
+
* Platform-agnostic interface for storing and retrieving IDP tokens.
|
|
5
|
+
* Platform-specific implementations (Cloudflare KV, Node.js database, etc.)
|
|
6
|
+
* implement this interface.
|
|
7
|
+
*
|
|
8
|
+
* @package @kya-os/mcp-i-core
|
|
9
|
+
*/
|
|
10
|
+
import type { IdpTokens } from "@kya-os/contracts/config";
|
|
11
|
+
/**
|
|
12
|
+
* Interface for IDP token storage
|
|
13
|
+
*/
|
|
14
|
+
export interface IIdpTokenStorage {
|
|
15
|
+
/**
|
|
16
|
+
* Store IDP tokens
|
|
17
|
+
*
|
|
18
|
+
* @param userDid - User DID to associate tokens with
|
|
19
|
+
* @param provider - OAuth provider name
|
|
20
|
+
* @param scopes - Scopes granted for these tokens
|
|
21
|
+
* @param tokens - IDP tokens to store
|
|
22
|
+
*/
|
|
23
|
+
storeToken(userDid: string, provider: string, scopes: string[], tokens: IdpTokens): Promise<void>;
|
|
24
|
+
/**
|
|
25
|
+
* Retrieve IDP tokens
|
|
26
|
+
*
|
|
27
|
+
* @param userDid - User DID to retrieve tokens for
|
|
28
|
+
* @param provider - OAuth provider name
|
|
29
|
+
* @param scopes - Scopes to retrieve tokens for
|
|
30
|
+
* @returns IDP tokens or null if not found
|
|
31
|
+
*/
|
|
32
|
+
getToken(userDid: string, provider: string, scopes: string[]): Promise<IdpTokens | null>;
|
|
33
|
+
/**
|
|
34
|
+
* Delete IDP tokens
|
|
35
|
+
*
|
|
36
|
+
* @param userDid - User DID
|
|
37
|
+
* @param provider - OAuth provider name
|
|
38
|
+
* @param scopes - Scopes
|
|
39
|
+
*/
|
|
40
|
+
deleteToken(userDid: string, provider: string, scopes: string[]): Promise<void>;
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=idp-token-storage.interface.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"idp-token-storage.interface.d.ts","sourceRoot":"","sources":["../../src/identity/idp-token-storage.interface.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAE1D;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;;;;;;OAOG;IACH,UAAU,CACR,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EAAE,EAChB,MAAM,EAAE,SAAS,GAChB,OAAO,CAAC,IAAI,CAAC,CAAC;IAEjB;;;;;;;OAOG;IACH,QAAQ,CACN,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EAAE,GACf,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC;IAE7B;;;;;;OAMG;IACH,WAAW,CACT,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EAAE,GACf,OAAO,CAAC,IAAI,CAAC,CAAC;CAClB"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* IDP Token Storage Interface
|
|
4
|
+
*
|
|
5
|
+
* Platform-agnostic interface for storing and retrieving IDP tokens.
|
|
6
|
+
* Platform-specific implementations (Cloudflare KV, Node.js database, etc.)
|
|
7
|
+
* implement this interface.
|
|
8
|
+
*
|
|
9
|
+
* @package @kya-os/mcp-i-core
|
|
10
|
+
*/
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
//# sourceMappingURL=idp-token-storage.interface.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"idp-token-storage.interface.js","sourceRoot":"","sources":["../../src/identity/idp-token-storage.interface.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG"}
|
package/dist/index.d.ts
CHANGED
|
@@ -17,6 +17,21 @@ export { ProofVerifier } from "./services/proof-verifier";
|
|
|
17
17
|
export type { ProofVerificationResult, ProofVerifierConfig, } from "./services/proof-verifier";
|
|
18
18
|
export { AccessControlApiService } from "./services/access-control.service";
|
|
19
19
|
export type { AccessControlApiServiceConfig, AccessControlApiServiceMetrics, } from "./services/access-control.service";
|
|
20
|
+
export { OAuthConfigService } from "./services/oauth-config.service";
|
|
21
|
+
export type { OAuthConfigServiceConfig } from "./services/oauth-config.service";
|
|
22
|
+
export { OAuthService } from "./services/oauth-service";
|
|
23
|
+
export type { OAuthServiceConfig } from "./services/oauth-service";
|
|
24
|
+
export { ToolContextBuilder } from "./services/tool-context-builder";
|
|
25
|
+
export type { ToolContextBuilderConfig } from "./services/tool-context-builder";
|
|
26
|
+
export { OAuthProviderRegistry } from "./services/oauth-provider-registry";
|
|
27
|
+
export { ProviderResolver } from "./services/provider-resolver";
|
|
28
|
+
export { ProviderValidator, ProviderValidationError } from "./services/provider-validator";
|
|
29
|
+
export { OAuthTokenRetrievalService } from "./services/oauth-token-retrieval.service";
|
|
30
|
+
export type { OAuthTokenRetrievalServiceConfig } from "./services/oauth-token-retrieval.service";
|
|
31
|
+
export { BatchDelegationService } from "./services/batch-delegation.service";
|
|
32
|
+
export type { ToolGroup } from "./services/batch-delegation.service";
|
|
33
|
+
export { InMemoryOAuthConfigCache, NoOpOAuthConfigCache, } from "./cache/oauth-config-cache";
|
|
34
|
+
export type { OAuthConfigCache } from "./cache/oauth-config-cache";
|
|
20
35
|
export { createStorageProviders, StorageKeyHelpers, migrateLegacyKeys, } from "./services/storage.service";
|
|
21
36
|
export type { StorageServiceConfig, StorageProviders, } from "./services/storage.service";
|
|
22
37
|
export { ProofVerificationError, PROOF_VERIFICATION_ERROR_CODES, createProofVerificationError, } from "./services/errors";
|
|
@@ -24,6 +39,8 @@ export type { ProofVerificationErrorCode } from "./services/errors";
|
|
|
24
39
|
export { ToolProtectionCache, InMemoryToolProtectionCache, NoOpToolProtectionCache, } from "./cache/tool-protection-cache";
|
|
25
40
|
export type { ToolProtection, ToolProtectionConfig, ToolProtectionServiceConfig, } from "./types/tool-protection";
|
|
26
41
|
export { DelegationRequiredError } from "./types/tool-protection";
|
|
42
|
+
export { OAuthRequiredError } from "./types/oauth-required-error";
|
|
43
|
+
export type { OAuthRequiredErrorOptions } from "./types/oauth-required-error";
|
|
27
44
|
export { DelegationCredentialIssuer, createDelegationIssuer, type IssueDelegationOptions, type VCSigningFunction, type IdentityProvider as DelegationIdentityProvider, } from "./delegation/vc-issuer";
|
|
28
45
|
export { DelegationCredentialVerifier, createDelegationVerifier, type DelegationVCVerificationResult, type VerifyDelegationVCOptions, type DIDResolver, type DIDDocument, type VerificationMethod, type StatusListResolver, type SignatureVerificationFunction, } from "./delegation/vc-verifier";
|
|
29
46
|
export { StatusList2021Manager, createStatusListManager, type StatusListStorageProvider, type StatusListIdentityProvider, } from "./delegation/statuslist-manager";
|
|
@@ -41,4 +58,7 @@ export * from "./config";
|
|
|
41
58
|
export { fetchRemoteConfig, type RemoteConfigCache, type RemoteConfigOptions, } from "./config/remote-config";
|
|
42
59
|
export { UserDidManager } from "./identity/user-did-manager";
|
|
43
60
|
export type { UserDidStorage, UserDidManagerConfig, } from "./identity/user-did-manager";
|
|
61
|
+
export { IdpTokenResolver } from "./identity/idp-token-resolver";
|
|
62
|
+
export type { IdpTokenResolverConfig } from "./identity/idp-token-resolver";
|
|
63
|
+
export type { IIdpTokenStorage } from "./identity/idp-token-storage.interface";
|
|
44
64
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EACL,cAAc,EACd,aAAa,EACb,aAAa,EACb,eAAe,EACf,kBAAkB,EAClB,gBAAgB,EAChB,KAAK,aAAa,GACnB,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EACL,qBAAqB,EACrB,wBAAwB,EACxB,sBAAsB,GACvB,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,YAAY,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAC;AAG/D,YAAY,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAG3D,cAAc,SAAS,CAAC;AAExB,OAAO,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAG3E,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAE1D,YAAY,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAGvE,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAE1D,YAAY,EACV,uBAAuB,EACvB,mBAAmB,GACpB,MAAM,2BAA2B,CAAC;AAGnC,OAAO,EAAE,uBAAuB,EAAE,MAAM,mCAAmC,CAAC;AAE5E,YAAY,EACV,6BAA6B,EAC7B,8BAA8B,GAC/B,MAAM,mCAAmC,CAAC;AAG3C,OAAO,EACL,sBAAsB,EACtB,iBAAiB,EACjB,iBAAiB,GAClB,MAAM,4BAA4B,CAAC;AAEpC,YAAY,EACV,oBAAoB,EACpB,gBAAgB,GACjB,MAAM,4BAA4B,CAAC;AAGpC,OAAO,EACL,sBAAsB,EACtB,8BAA8B,EAC9B,4BAA4B,GAC7B,MAAM,mBAAmB,CAAC;AAE3B,YAAY,EAAE,0BAA0B,EAAE,MAAM,mBAAmB,CAAC;AAEpE,OAAO,EACL,mBAAmB,EACnB,2BAA2B,EAC3B,uBAAuB,GACxB,MAAM,+BAA+B,CAAC;AAEvC,YAAY,EACV,cAAc,EACd,oBAAoB,EACpB,2BAA2B,GAC5B,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -20,7 +20,8 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
20
20
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
21
21
|
};
|
|
22
22
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
23
|
-
exports.
|
|
23
|
+
exports.SchemaVerifier = exports.MemoryDelegationGraphStorage = exports.MemoryStatusListStorage = exports.createCascadingRevocationManager = exports.CascadingRevocationManager = exports.createDelegationGraph = exports.DelegationGraphManager = exports.isIndexSet = exports.BitstringManager = exports.createStatusListManager = exports.StatusList2021Manager = exports.createDelegationVerifier = exports.DelegationCredentialVerifier = exports.createDelegationIssuer = exports.DelegationCredentialIssuer = exports.OAuthRequiredError = exports.DelegationRequiredError = exports.NoOpToolProtectionCache = exports.InMemoryToolProtectionCache = exports.createProofVerificationError = exports.PROOF_VERIFICATION_ERROR_CODES = exports.ProofVerificationError = exports.migrateLegacyKeys = exports.StorageKeyHelpers = exports.createStorageProviders = exports.NoOpOAuthConfigCache = exports.InMemoryOAuthConfigCache = exports.BatchDelegationService = exports.OAuthTokenRetrievalService = exports.ProviderValidationError = exports.ProviderValidator = exports.ProviderResolver = exports.OAuthProviderRegistry = exports.ToolContextBuilder = exports.OAuthService = exports.OAuthConfigService = exports.AccessControlApiService = exports.ProofVerifier = exports.CryptoService = exports.ToolProtectionService = exports.MCPIRuntimeBase = exports.MemoryIdentityProvider = exports.MemoryNonceCacheProvider = exports.MemoryStorageProvider = exports.IdentityProvider = exports.NonceCacheProvider = exports.StorageProvider = exports.FetchProvider = exports.ClockProvider = exports.CryptoProvider = void 0;
|
|
24
|
+
exports.IdpTokenResolver = exports.UserDidManager = exports.fetchRemoteConfig = exports.canonicalizeJSON = exports.getSchemaStats = exports.getCriticalSchemas = exports.getSchemaById = exports.getSchemasByCategory = exports.getAllSchemas = exports.SCHEMA_REGISTRY = exports.createSchemaVerifier = void 0;
|
|
24
25
|
// Base providers
|
|
25
26
|
var base_1 = require("./providers/base");
|
|
26
27
|
Object.defineProperty(exports, "CryptoProvider", { enumerable: true, get: function () { return base_1.CryptoProvider; } });
|
|
@@ -51,6 +52,35 @@ Object.defineProperty(exports, "ProofVerifier", { enumerable: true, get: functio
|
|
|
51
52
|
// Access Control API Service (stub for Phase 3)
|
|
52
53
|
var access_control_service_1 = require("./services/access-control.service");
|
|
53
54
|
Object.defineProperty(exports, "AccessControlApiService", { enumerable: true, get: function () { return access_control_service_1.AccessControlApiService; } });
|
|
55
|
+
// OAuth Config Service (Phase 1)
|
|
56
|
+
var oauth_config_service_1 = require("./services/oauth-config.service");
|
|
57
|
+
Object.defineProperty(exports, "OAuthConfigService", { enumerable: true, get: function () { return oauth_config_service_1.OAuthConfigService; } });
|
|
58
|
+
// OAuth Service (Phase 1)
|
|
59
|
+
var oauth_service_1 = require("./services/oauth-service");
|
|
60
|
+
Object.defineProperty(exports, "OAuthService", { enumerable: true, get: function () { return oauth_service_1.OAuthService; } });
|
|
61
|
+
// Tool Context Builder (Phase 1)
|
|
62
|
+
var tool_context_builder_1 = require("./services/tool-context-builder");
|
|
63
|
+
Object.defineProperty(exports, "ToolContextBuilder", { enumerable: true, get: function () { return tool_context_builder_1.ToolContextBuilder; } });
|
|
64
|
+
// OAuth Provider Registry (Phase 2)
|
|
65
|
+
var oauth_provider_registry_1 = require("./services/oauth-provider-registry");
|
|
66
|
+
Object.defineProperty(exports, "OAuthProviderRegistry", { enumerable: true, get: function () { return oauth_provider_registry_1.OAuthProviderRegistry; } });
|
|
67
|
+
// Provider Resolver (Phase 2)
|
|
68
|
+
var provider_resolver_1 = require("./services/provider-resolver");
|
|
69
|
+
Object.defineProperty(exports, "ProviderResolver", { enumerable: true, get: function () { return provider_resolver_1.ProviderResolver; } });
|
|
70
|
+
// Provider Validator (Phase 3)
|
|
71
|
+
var provider_validator_1 = require("./services/provider-validator");
|
|
72
|
+
Object.defineProperty(exports, "ProviderValidator", { enumerable: true, get: function () { return provider_validator_1.ProviderValidator; } });
|
|
73
|
+
Object.defineProperty(exports, "ProviderValidationError", { enumerable: true, get: function () { return provider_validator_1.ProviderValidationError; } });
|
|
74
|
+
// OAuth Token Retrieval Service (Phase 3)
|
|
75
|
+
var oauth_token_retrieval_service_1 = require("./services/oauth-token-retrieval.service");
|
|
76
|
+
Object.defineProperty(exports, "OAuthTokenRetrievalService", { enumerable: true, get: function () { return oauth_token_retrieval_service_1.OAuthTokenRetrievalService; } });
|
|
77
|
+
// Batch Delegation Service (Phase 2)
|
|
78
|
+
var batch_delegation_service_1 = require("./services/batch-delegation.service");
|
|
79
|
+
Object.defineProperty(exports, "BatchDelegationService", { enumerable: true, get: function () { return batch_delegation_service_1.BatchDelegationService; } });
|
|
80
|
+
// OAuth Config Cache
|
|
81
|
+
var oauth_config_cache_1 = require("./cache/oauth-config-cache");
|
|
82
|
+
Object.defineProperty(exports, "InMemoryOAuthConfigCache", { enumerable: true, get: function () { return oauth_config_cache_1.InMemoryOAuthConfigCache; } });
|
|
83
|
+
Object.defineProperty(exports, "NoOpOAuthConfigCache", { enumerable: true, get: function () { return oauth_config_cache_1.NoOpOAuthConfigCache; } });
|
|
54
84
|
// Storage Service Factory
|
|
55
85
|
var storage_service_1 = require("./services/storage.service");
|
|
56
86
|
Object.defineProperty(exports, "createStorageProviders", { enumerable: true, get: function () { return storage_service_1.createStorageProviders; } });
|
|
@@ -66,6 +96,8 @@ Object.defineProperty(exports, "InMemoryToolProtectionCache", { enumerable: true
|
|
|
66
96
|
Object.defineProperty(exports, "NoOpToolProtectionCache", { enumerable: true, get: function () { return tool_protection_cache_1.NoOpToolProtectionCache; } });
|
|
67
97
|
var tool_protection_1 = require("./types/tool-protection");
|
|
68
98
|
Object.defineProperty(exports, "DelegationRequiredError", { enumerable: true, get: function () { return tool_protection_1.DelegationRequiredError; } });
|
|
99
|
+
var oauth_required_error_1 = require("./types/oauth-required-error");
|
|
100
|
+
Object.defineProperty(exports, "OAuthRequiredError", { enumerable: true, get: function () { return oauth_required_error_1.OAuthRequiredError; } });
|
|
69
101
|
// Delegation (W3C VC-based)
|
|
70
102
|
var vc_issuer_1 = require("./delegation/vc-issuer");
|
|
71
103
|
Object.defineProperty(exports, "DelegationCredentialIssuer", { enumerable: true, get: function () { return vc_issuer_1.DelegationCredentialIssuer; } });
|
|
@@ -113,4 +145,7 @@ Object.defineProperty(exports, "fetchRemoteConfig", { enumerable: true, get: fun
|
|
|
113
145
|
// User DID Manager (Phase 4)
|
|
114
146
|
var user_did_manager_1 = require("./identity/user-did-manager");
|
|
115
147
|
Object.defineProperty(exports, "UserDidManager", { enumerable: true, get: function () { return user_did_manager_1.UserDidManager; } });
|
|
148
|
+
// IDP Token Resolver (Phase 1 - MH-7)
|
|
149
|
+
var idp_token_resolver_1 = require("./identity/idp-token-resolver");
|
|
150
|
+
Object.defineProperty(exports, "IdpTokenResolver", { enumerable: true, get: function () { return idp_token_resolver_1.IdpTokenResolver; } });
|
|
116
151
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;;;GAKG
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;;;;;;;;;;;;;;;;AAEH,iBAAiB;AACjB,yCAQ0B;AAPxB,sGAAA,cAAc,OAAA;AACd,qGAAA,aAAa,OAAA;AACb,qGAAA,aAAa,OAAA;AACb,uGAAA,eAAe,OAAA;AACf,0GAAA,kBAAkB,OAAA;AAClB,wGAAA,gBAAgB,OAAA;AAIlB,mBAAmB;AACnB,6CAI4B;AAH1B,+GAAA,qBAAqB,OAAA;AACrB,kHAAA,wBAAwB,OAAA;AACxB,gHAAA,sBAAsB,OAAA;AAGxB,UAAU;AACV,uCAAiD;AAAxC,uGAAA,eAAe,OAAA;AAMxB,YAAY;AACZ,0CAAwB;AACxB,kBAAkB;AAClB,8EAA2E;AAAlE,gIAAA,qBAAqB,OAAA;AAE9B,iBAAiB;AACjB,4DAA0D;AAAjD,+GAAA,aAAa,OAAA;AAItB,yBAAyB;AACzB,4DAA0D;AAAjD,+GAAA,aAAa,OAAA;AAOtB,gDAAgD;AAChD,4EAA4E;AAAnE,iIAAA,uBAAuB,OAAA;AAOhC,iCAAiC;AACjC,wEAAqE;AAA5D,0HAAA,kBAAkB,OAAA;AAI3B,0BAA0B;AAC1B,0DAAwD;AAA/C,6GAAA,YAAY,OAAA;AAIrB,iCAAiC;AACjC,wEAAqE;AAA5D,0HAAA,kBAAkB,OAAA;AAI3B,oCAAoC;AACpC,8EAA2E;AAAlE,gIAAA,qBAAqB,OAAA;AAE9B,8BAA8B;AAC9B,kEAAgE;AAAvD,qHAAA,gBAAgB,OAAA;AAEzB,+BAA+B;AAC/B,oEAA2F;AAAlF,uHAAA,iBAAiB,OAAA;AAAE,6HAAA,uBAAuB,OAAA;AAEnD,0CAA0C;AAC1C,0FAAsF;AAA7E,2IAAA,0BAA0B,OAAA;AAGnC,qCAAqC;AACrC,gFAA6E;AAApE,kIAAA,sBAAsB,OAAA;AAG/B,qBAAqB;AACrB,iEAGoC;AAFlC,8HAAA,wBAAwB,OAAA;AACxB,0HAAA,oBAAoB,OAAA;AAKtB,0BAA0B;AAC1B,8DAIoC;AAHlC,yHAAA,sBAAsB,OAAA;AACtB,oHAAA,iBAAiB,OAAA;AACjB,oHAAA,iBAAiB,OAAA;AAQnB,4BAA4B;AAC5B,4CAI2B;AAHzB,gHAAA,sBAAsB,OAAA;AACtB,wHAAA,8BAA8B,OAAA;AAC9B,sHAAA,4BAA4B,OAAA;AAK9B,uEAIuC;AAFrC,oIAAA,2BAA2B,OAAA;AAC3B,gIAAA,uBAAuB,OAAA;AASzB,2DAAkE;AAAzD,0HAAA,uBAAuB,OAAA;AAChC,qEAAkE;AAAzD,0HAAA,kBAAkB,OAAA;AAG3B,4BAA4B;AAC5B,oDAMgC;AAL9B,uHAAA,0BAA0B,OAAA;AAC1B,mHAAA,sBAAsB,OAAA;AAMxB,wDAUkC;AAThC,2HAAA,4BAA4B,OAAA;AAC5B,uHAAA,wBAAwB,OAAA;AAU1B,iBAAiB;AACjB,sEAKyC;AAJvC,2HAAA,qBAAqB,OAAA;AACrB,6HAAA,uBAAuB,OAAA;AAKzB,oDAKgC;AAJ9B,6GAAA,gBAAgB,OAAA;AAChB,uGAAA,UAAU,OAAA;AAKZ,0CAA0C;AAC1C,kEAKuC;AAJrC,0HAAA,sBAAsB,OAAA;AACtB,yHAAA,qBAAqB,OAAA;AAKvB,0EAM2C;AALzC,kIAAA,0BAA0B,OAAA;AAC1B,wIAAA,gCAAgC,OAAA;AAMlC,qDAAqD;AACrD,4FAAyF;AAAhF,oIAAA,uBAAuB,OAAA;AAEhC,kFAAyF;AAAhF,oIAAA,4BAA4B,OAAA;AAErC,8DAA8D;AAC9D,gEAOsC;AANpC,iHAAA,cAAc,OAAA;AACd,uHAAA,oBAAoB,OAAA;AAOtB,gEAOsC;AANpC,kHAAA,eAAe,OAAA;AACf,gHAAA,aAAa,OAAA;AACb,uHAAA,oBAAoB,OAAA;AACpB,gHAAA,aAAa,OAAA;AACb,qHAAA,kBAAkB,OAAA;AAClB,iHAAA,cAAc,OAAA;AAGhB,4CAAsD;AAA7C,yGAAA,gBAAgB,OAAA;AA4BzB,oCAAoC;AACpC,2CAAyB;AAEzB,gCAAgC;AAChC,wDAIgC;AAH9B,kHAAA,iBAAiB,OAAA;AAKnB,6BAA6B;AAC7B,gEAA6D;AAApD,kHAAA,cAAc,OAAA;AAMvB,sCAAsC;AACtC,oEAAiE;AAAxD,sHAAA,gBAAgB,OAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"access-control.service.d.ts","sourceRoot":"","sources":["../../src/services/access-control.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EACV,uBAAuB,EACvB,2BAA2B,EAC3B,+BAA+B,EAC/B,sBAAsB,EACtB,uBAAuB,EACxB,MAAM,mCAAmC,CAAC;AAS3C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AASvD,MAAM,WAAW,6BAA6B;IAC5C,2EAA2E;IAC3E,OAAO,EAAE,MAAM,CAAC;IAEhB,iCAAiC;IACjC,MAAM,EAAE,MAAM,CAAC;IAEf,8CAA8C;IAC9C,aAAa,EAAE,aAAa,CAAC;IAE7B,+CAA+C;IAC/C,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;IAEnD,mCAAmC;IACnC,WAAW,CAAC,EAAE;QACZ,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB,CAAC;IAEF,6DAA6D;IAC7D,aAAa,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/C;AAED,MAAM,WAAW,8BAA8B;IAC7C,oCAAoC;IACpC,YAAY,EAAE,MAAM,CAAC;IAErB,gCAAgC;IAChC,UAAU,EAAE,MAAM,CAAC;IAEnB,kCAAkC;IAClC,UAAU,EAAE,MAAM,CAAC;CACpB;AA0BD;;;;;GAKG;AACH,qBAAa,uBAAuB;IAClC,OAAO,CAAC,MAAM,CAAwC;IACtD,OAAO,CAAC,OAAO,CAAiC;gBAEpC,MAAM,EAAE,6BAA6B;IAwBjD;;;;OAIG;IACG,WAAW,CAAC,OAAO,EAAE;QACzB,QAAQ,EAAE,MAAM,CAAC;KAClB,GAAG,OAAO,CAAC,+BAA+B,CAAC;IAkD5C;;;;OAIG;IACG,gBAAgB,CACpB,OAAO,EAAE,uBAAuB,EAChC,OAAO,CAAC,EAAE;QACR,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,aAAa,CAAC,EAAE,MAAM,CAAC;KACxB,GACA,OAAO,CAAC,2BAA2B,CAAC;IAwHvC;;;;OAIG;IACG,YAAY,CAChB,OAAO,EAAE,sBAAsB,GAC9B,OAAO,CAAC,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"access-control.service.d.ts","sourceRoot":"","sources":["../../src/services/access-control.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EACV,uBAAuB,EACvB,2BAA2B,EAC3B,+BAA+B,EAC/B,sBAAsB,EACtB,uBAAuB,EACxB,MAAM,mCAAmC,CAAC;AAS3C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AASvD,MAAM,WAAW,6BAA6B;IAC5C,2EAA2E;IAC3E,OAAO,EAAE,MAAM,CAAC;IAEhB,iCAAiC;IACjC,MAAM,EAAE,MAAM,CAAC;IAEf,8CAA8C;IAC9C,aAAa,EAAE,aAAa,CAAC;IAE7B,+CAA+C;IAC/C,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;IAEnD,mCAAmC;IACnC,WAAW,CAAC,EAAE;QACZ,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB,CAAC;IAEF,6DAA6D;IAC7D,aAAa,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/C;AAED,MAAM,WAAW,8BAA8B;IAC7C,oCAAoC;IACpC,YAAY,EAAE,MAAM,CAAC;IAErB,gCAAgC;IAChC,UAAU,EAAE,MAAM,CAAC;IAEnB,kCAAkC;IAClC,UAAU,EAAE,MAAM,CAAC;CACpB;AA0BD;;;;;GAKG;AACH,qBAAa,uBAAuB;IAClC,OAAO,CAAC,MAAM,CAAwC;IACtD,OAAO,CAAC,OAAO,CAAiC;gBAEpC,MAAM,EAAE,6BAA6B;IAwBjD;;;;OAIG;IACG,WAAW,CAAC,OAAO,EAAE;QACzB,QAAQ,EAAE,MAAM,CAAC;KAClB,GAAG,OAAO,CAAC,+BAA+B,CAAC;IAkD5C;;;;OAIG;IACG,gBAAgB,CACpB,OAAO,EAAE,uBAAuB,EAChC,OAAO,CAAC,EAAE;QACR,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,aAAa,CAAC,EAAE,MAAM,CAAC;KACxB,GACA,OAAO,CAAC,2BAA2B,CAAC;IAwHvC;;;;OAIG;IACG,YAAY,CAChB,OAAO,EAAE,sBAAsB,GAC9B,OAAO,CAAC,uBAAuB,CAAC;IAoWnC;;OAEG;IACH,UAAU,IAAI,8BAA8B;IAI5C;;OAEG;IACH,YAAY,IAAI,IAAI;IAQpB;;;;OAIG;YACW,gBAAgB;IAkC9B;;;;OAIG;IACH,OAAO,CAAC,gBAAgB;IAmCxB;;;;;OAKG;IACH,OAAO,CAAC,KAAK;IAIb;;;;OAIG;IACH,OAAO,CAAC,iBAAiB;IAyBzB;;;;OAIG;IACH,OAAO,CAAC,oBAAoB;IAa5B;;;;OAIG;IACH,OAAO,CAAC,mBAAmB;CAkC5B"}
|
|
@@ -398,6 +398,13 @@ class AccessControlApiService {
|
|
|
398
398
|
};
|
|
399
399
|
this.config.logger(`[AccessControl] Response validation failed`, validationErrorLog);
|
|
400
400
|
// CRITICAL: Log to console.error with full details for debugging
|
|
401
|
+
// This format matches test expectations: single call with message and error object
|
|
402
|
+
// This log must include 'Response validation failed' in the message for test compatibility
|
|
403
|
+
console.error(`[AccessControl] Response validation failed`, {
|
|
404
|
+
zodErrors: parsed.error.errors,
|
|
405
|
+
responseData: responseData,
|
|
406
|
+
});
|
|
407
|
+
// Additional detailed logging for debugging
|
|
401
408
|
console.error(`[AccessControl] Response validation failed`, validationErrorLog);
|
|
402
409
|
// CRITICAL: Log each zod error individually for easier debugging
|
|
403
410
|
console.error(`[AccessControl] ❌ ZOD VALIDATION FAILED (direct) - ${parsed.error.errors.length} error(s):`);
|