@kya-os/mcp-i-core 1.3.0 → 1.3.1
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/.turbo/turbo-build.log +1 -1
- package/.turbo/turbo-test.log +1251 -1245
- package/dist/services/oauth-config.service.d.ts.map +1 -1
- package/dist/services/oauth-config.service.js +5 -3
- package/dist/services/oauth-config.service.js.map +1 -1
- package/dist/services/oauth-provider-registry.d.ts +11 -0
- package/dist/services/oauth-provider-registry.d.ts.map +1 -1
- package/dist/services/oauth-provider-registry.js +16 -0
- package/dist/services/oauth-provider-registry.js.map +1 -1
- package/dist/services/provider-resolver.d.ts +1 -1
- package/dist/services/provider-resolver.d.ts.map +1 -1
- package/dist/services/provider-resolver.js +14 -13
- package/dist/services/provider-resolver.js.map +1 -1
- package/package.json +2 -2
- package/src/__tests__/regression/phase2-regression.test.ts +8 -6
- package/src/__tests__/services/provider-resolver-edge-cases.test.ts +168 -64
- package/src/services/__tests__/provider-resolution.integration.test.ts +9 -5
- package/src/services/__tests__/provider-resolver.test.ts +22 -26
- package/src/services/oauth-config.service.ts +6 -3
- package/src/services/oauth-provider-registry.ts +18 -0
- package/src/services/provider-resolver.ts +15 -13
- package/.turbo/turbo-test$colon$coverage.log +0 -4514
- package/src/cache/oauth-config-cache.js +0 -71
- package/src/providers/base.js +0 -38
- package/src/services/oauth-config.service.js +0 -113
- package/src/services/oauth-provider-registry.js +0 -73
- package/src/services/provider-resolver.js +0 -106
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oauth-config.service.d.ts","sourceRoot":"","sources":["../../src/services/oauth-config.service.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,KAAK,EAAE,WAAW,EAAiB,MAAM,0BAA0B,CAAC;AAC3E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAGvE,MAAM,WAAW,wBAAwB;IACvC,oEAAoE;IACpE,OAAO,EAAE,MAAM,CAAC;IAEhB,iCAAiC;IACjC,MAAM,EAAE,MAAM,CAAC;IAEf,8CAA8C;IAC9C,aAAa,EAAE,aAAa,CAAC;IAE7B,mDAAmD;IACnD,KAAK,CAAC,EAAE,gBAAgB,CAAC;IAEzB,qDAAqD;IACrD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,+CAA+C;IAC/C,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;CACpD;AAED;;GAEG;AACH,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,MAAM,CAGZ;gBAEU,MAAM,EAAE,wBAAwB;IAW5C;;;;;;;;OAQG;IACG,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"oauth-config.service.d.ts","sourceRoot":"","sources":["../../src/services/oauth-config.service.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,KAAK,EAAE,WAAW,EAAiB,MAAM,0BAA0B,CAAC;AAC3E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAGvE,MAAM,WAAW,wBAAwB;IACvC,oEAAoE;IACpE,OAAO,EAAE,MAAM,CAAC;IAEhB,iCAAiC;IACjC,MAAM,EAAE,MAAM,CAAC;IAEf,8CAA8C;IAC9C,aAAa,EAAE,aAAa,CAAC;IAE7B,mDAAmD;IACnD,KAAK,CAAC,EAAE,gBAAgB,CAAC;IAEzB,qDAAqD;IACrD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,+CAA+C;IAC/C,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;CACpD;AAED;;GAEG;AACH,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,MAAM,CAGZ;gBAEU,MAAM,EAAE,wBAAwB;IAW5C;;;;;;;;OAQG;IACG,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAuF7D;;;;OAIG;IACG,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKlD;;OAEG;IACG,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;CAIrC"}
|
|
@@ -72,11 +72,12 @@ class OAuthConfigService {
|
|
|
72
72
|
throw new Error("Invalid API response: providers must be an object, not an array");
|
|
73
73
|
}
|
|
74
74
|
// Build OAuthConfig object
|
|
75
|
-
//
|
|
76
|
-
//
|
|
77
|
-
|
|
75
|
+
// Extract configuredProvider from API response - this indicates which provider
|
|
76
|
+
// the user has actually configured in AgentShield dashboard
|
|
77
|
+
const configuredProvider = result.data.configuredProvider || null;
|
|
78
78
|
const config = {
|
|
79
79
|
providers: providers,
|
|
80
|
+
configuredProvider,
|
|
80
81
|
};
|
|
81
82
|
// Cache config
|
|
82
83
|
await this.config.cache.set(projectId, config, this.config.cacheTtl);
|
|
@@ -84,6 +85,7 @@ class OAuthConfigService {
|
|
|
84
85
|
projectId,
|
|
85
86
|
providerCount: Object.keys(providers).length,
|
|
86
87
|
providers: Object.keys(providers),
|
|
88
|
+
configuredProvider,
|
|
87
89
|
expiresAt: new Date(Date.now() + this.config.cacheTtl).toISOString(),
|
|
88
90
|
});
|
|
89
91
|
return config;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oauth-config.service.js","sourceRoot":"","sources":["../../src/services/oauth-config.service.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;;AAKH,0EAA0E;AAsB1E;;GAEG;AACH,MAAa,kBAAkB;IACrB,MAAM,CAGZ;IAEF,YAAY,MAAgC;QAC1C,IAAI,CAAC,MAAM,GAAG;YACZ,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,aAAa,EAAE,MAAM,CAAC,aAAa;YACnC,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,EAAE,oBAAoB;YAChE,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC;YACnC,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,IAAI,gDAAwB,EAAE;SACtD,CAAC;IACJ,CAAC;IAED;;;;;;;;OAQG;IACH,KAAK,CAAC,cAAc,CAAC,SAAiB;QACpC,cAAc;QACd,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACtD,IAAI,MAAM,EAAE,CAAC;YACX,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,gCAAgC,EAAE;gBACnD,SAAS;aACV,CAAC,CAAC;YACH,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,6BAA6B;QAC7B,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,4BAA4B,kBAAkB,CAAC,SAAS,CAAC,YAAY,CAAC;QAExG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,+CAA+C,EAAE;YAClE,SAAS;YACT,GAAG;SACJ,CAAC,CAAC;QAEH,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,GAAG,EAAE;gBAC1D,MAAM,EAAE,KAAK;gBACb,OAAO,EAAE;oBACP,aAAa,EAAE,UAAU,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;oBAC7C,cAAc,EAAE,kBAAkB;iBACnC;aACF,CAAC,CAAC;YAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBACjB,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,eAAe,CAAC,CAAC;gBACrE,MAAM,IAAI,KAAK,CACb,iCAAiC,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,UAAU,MAAM,SAAS,EAAE,CACzF,CAAC;YACJ,CAAC;YAED,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,
|
|
1
|
+
{"version":3,"file":"oauth-config.service.js","sourceRoot":"","sources":["../../src/services/oauth-config.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -19,16 +19,27 @@ export declare class OAuthProviderRegistry {
|
|
|
19
19
|
private configService;
|
|
20
20
|
private validator?;
|
|
21
21
|
private providers;
|
|
22
|
+
private _configuredProvider;
|
|
22
23
|
constructor(configService: OAuthConfigService, validator?: ProviderValidator | undefined);
|
|
23
24
|
/**
|
|
24
25
|
* Load providers from AgentShield API
|
|
25
26
|
*
|
|
26
27
|
* Fetches OAuth configuration and caches providers in memory.
|
|
27
28
|
* Clears existing providers before loading new ones.
|
|
29
|
+
* Also stores the configured provider from the API response.
|
|
28
30
|
*
|
|
29
31
|
* @param projectId - Project ID to load providers for
|
|
30
32
|
*/
|
|
31
33
|
loadFromAgentShield(projectId: string): Promise<void>;
|
|
34
|
+
/**
|
|
35
|
+
* Get the explicitly configured provider for this project
|
|
36
|
+
*
|
|
37
|
+
* Returns the provider that the user has configured in AgentShield dashboard.
|
|
38
|
+
* Used by ProviderResolver as fallback when tool doesn't specify oauthProvider.
|
|
39
|
+
*
|
|
40
|
+
* @returns Configured provider name, or null if no provider is configured
|
|
41
|
+
*/
|
|
42
|
+
getConfiguredProvider(): string | null;
|
|
32
43
|
/**
|
|
33
44
|
* Get provider by name
|
|
34
45
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oauth-provider-registry.d.ts","sourceRoot":"","sources":["../../src/services/oauth-provider-registry.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAEjE;;;;;GAKG;AACH,qBAAa,qBAAqB;
|
|
1
|
+
{"version":3,"file":"oauth-provider-registry.d.ts","sourceRoot":"","sources":["../../src/services/oauth-provider-registry.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAEjE;;;;;GAKG;AACH,qBAAa,qBAAqB;IAK9B,OAAO,CAAC,aAAa;IACrB,OAAO,CAAC,SAAS,CAAC;IALpB,OAAO,CAAC,SAAS,CAAyC;IAC1D,OAAO,CAAC,mBAAmB,CAAuB;gBAGxC,aAAa,EAAE,kBAAkB,EACjC,SAAS,CAAC,EAAE,iBAAiB,YAAA;IAGvC;;;;;;;;OAQG;IACG,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAgB3D;;;;;;;OAOG;IACH,qBAAqB,IAAI,MAAM,GAAG,IAAI;IAItC;;;;;OAKG;IACH,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI;IAI/C;;;;OAIG;IACH,eAAe,IAAI,aAAa,EAAE;IAIlC;;;;;OAKG;IACH,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAIlC;;;;OAIG;IACH,gBAAgB,IAAI,MAAM,EAAE;IAI5B;;;;;;OAMG;IACH,sBAAsB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa,GAAG,IAAI;IAUnE;;;;;;;;OAQG;IACH,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI;CAU1D"}
|
|
@@ -19,6 +19,7 @@ class OAuthProviderRegistry {
|
|
|
19
19
|
configService;
|
|
20
20
|
validator;
|
|
21
21
|
providers = new Map();
|
|
22
|
+
_configuredProvider = null;
|
|
22
23
|
constructor(configService, validator) {
|
|
23
24
|
this.configService = configService;
|
|
24
25
|
this.validator = validator;
|
|
@@ -28,6 +29,7 @@ class OAuthProviderRegistry {
|
|
|
28
29
|
*
|
|
29
30
|
* Fetches OAuth configuration and caches providers in memory.
|
|
30
31
|
* Clears existing providers before loading new ones.
|
|
32
|
+
* Also stores the configured provider from the API response.
|
|
31
33
|
*
|
|
32
34
|
* @param projectId - Project ID to load providers for
|
|
33
35
|
*/
|
|
@@ -35,11 +37,25 @@ class OAuthProviderRegistry {
|
|
|
35
37
|
const config = await this.configService.getOAuthConfig(projectId);
|
|
36
38
|
// Clear existing providers
|
|
37
39
|
this.providers.clear();
|
|
40
|
+
// Store the configured provider from API response
|
|
41
|
+
// This is the provider the user has explicitly configured in AgentShield dashboard
|
|
42
|
+
this._configuredProvider = config.configuredProvider || null;
|
|
38
43
|
// Register all providers from config
|
|
39
44
|
for (const [name, providerConfig] of Object.entries(config.providers)) {
|
|
40
45
|
this.providers.set(name, providerConfig);
|
|
41
46
|
}
|
|
42
47
|
}
|
|
48
|
+
/**
|
|
49
|
+
* Get the explicitly configured provider for this project
|
|
50
|
+
*
|
|
51
|
+
* Returns the provider that the user has configured in AgentShield dashboard.
|
|
52
|
+
* Used by ProviderResolver as fallback when tool doesn't specify oauthProvider.
|
|
53
|
+
*
|
|
54
|
+
* @returns Configured provider name, or null if no provider is configured
|
|
55
|
+
*/
|
|
56
|
+
getConfiguredProvider() {
|
|
57
|
+
return this._configuredProvider;
|
|
58
|
+
}
|
|
43
59
|
/**
|
|
44
60
|
* Get provider by name
|
|
45
61
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oauth-provider-registry.js","sourceRoot":"","sources":["../../src/services/oauth-provider-registry.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;;AAMH;;;;;GAKG;AACH,MAAa,qBAAqB;
|
|
1
|
+
{"version":3,"file":"oauth-provider-registry.js","sourceRoot":"","sources":["../../src/services/oauth-provider-registry.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;;AAMH;;;;;GAKG;AACH,MAAa,qBAAqB;IAKtB;IACA;IALF,SAAS,GAA+B,IAAI,GAAG,EAAE,CAAC;IAClD,mBAAmB,GAAkB,IAAI,CAAC;IAElD,YACU,aAAiC,EACjC,SAA6B;QAD7B,kBAAa,GAAb,aAAa,CAAoB;QACjC,cAAS,GAAT,SAAS,CAAoB;IACpC,CAAC;IAEJ;;;;;;;;OAQG;IACH,KAAK,CAAC,mBAAmB,CAAC,SAAiB;QACzC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;QAElE,2BAA2B;QAC3B,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;QAEvB,kDAAkD;QAClD,mFAAmF;QACnF,IAAI,CAAC,mBAAmB,GAAG,MAAM,CAAC,kBAAkB,IAAI,IAAI,CAAC;QAE7D,qCAAqC;QACrC,KAAK,MAAM,CAAC,IAAI,EAAE,cAAc,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC;YACtE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;QAC3C,CAAC;IACH,CAAC;IAED;;;;;;;OAOG;IACH,qBAAqB;QACnB,OAAO,IAAI,CAAC,mBAAmB,CAAC;IAClC,CAAC;IAED;;;;;OAKG;IACH,WAAW,CAAC,IAAY;QACtB,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;IAC1C,CAAC;IAED;;;;OAIG;IACH,eAAe;QACb,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC;IAC7C,CAAC;IAED;;;;;OAKG;IACH,WAAW,CAAC,IAAY;QACtB,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC;IAED;;;;OAIG;IACH,gBAAgB;QACd,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC;IAC3C,CAAC;IAED;;;;;;OAMG;IACH,sBAAsB,CAAC,IAAY,EAAE,QAAuB;QAC1D,4DAA4D;QAC5D,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QAC1C,CAAC;QAED,oBAAoB;QACpB,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IACrC,CAAC;IAED;;;;;;;;OAQG;IACH,qBAAqB,CAAC,IAAY;QAChC,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QACxC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,OAAO,IAAI,CAAC;QACd,CAAC;QAED,iEAAiE;QACjE,yEAAyE;QACzE,OAAO,QAAQ,CAAC;IAClB,CAAC;CACF;AAxHD,sDAwHC"}
|
|
@@ -15,7 +15,7 @@ import type { OAuthConfigService } from "./oauth-config.service.js";
|
|
|
15
15
|
* Priority order:
|
|
16
16
|
* 1. Tool-specific oauthProvider field (Phase 2+ preferred)
|
|
17
17
|
* 2. Scope prefix inference (fallback)
|
|
18
|
-
* 3.
|
|
18
|
+
* 3. Project-configured provider from AgentShield dashboard
|
|
19
19
|
* 4. Error if no provider can be resolved
|
|
20
20
|
*/
|
|
21
21
|
export declare class ProviderResolver {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider-resolver.d.ts","sourceRoot":"","sources":["../../src/services/provider-resolver.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AACxE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AAC1E,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAEpE;;;;;;;;GAQG;AACH,qBAAa,gBAAgB;IAEzB,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,aAAa;gBADb,QAAQ,EAAE,qBAAqB,EAC/B,aAAa,EAAE,kBAAkB;IAG3C;;;;;;;OAOG;IACG,eAAe,CACnB,cAAc,EAAE,cAAc,EAC9B,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"provider-resolver.d.ts","sourceRoot":"","sources":["../../src/services/provider-resolver.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AACxE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AAC1E,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAEpE;;;;;;;;GAQG;AACH,qBAAa,gBAAgB;IAEzB,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,aAAa;gBADb,QAAQ,EAAE,qBAAqB,EAC/B,aAAa,EAAE,kBAAkB;IAG3C;;;;;;;OAOG;IACG,eAAe,CACnB,cAAc,EAAE,cAAc,EAC9B,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,MAAM,CAAC;IAyDlB;;;;;;;;;;;OAWG;IACH,OAAO,CAAC,uBAAuB;CAoChC"}
|
|
@@ -15,7 +15,7 @@ exports.ProviderResolver = void 0;
|
|
|
15
15
|
* Priority order:
|
|
16
16
|
* 1. Tool-specific oauthProvider field (Phase 2+ preferred)
|
|
17
17
|
* 2. Scope prefix inference (fallback)
|
|
18
|
-
* 3.
|
|
18
|
+
* 3. Project-configured provider from AgentShield dashboard
|
|
19
19
|
* 4. Error if no provider can be resolved
|
|
20
20
|
*/
|
|
21
21
|
class ProviderResolver {
|
|
@@ -58,21 +58,22 @@ class ProviderResolver {
|
|
|
58
58
|
return inferredProvider;
|
|
59
59
|
}
|
|
60
60
|
}
|
|
61
|
-
// Priority 3:
|
|
62
|
-
//
|
|
61
|
+
// Priority 3: Use explicitly configured provider from AgentShield dashboard
|
|
62
|
+
// This is the provider the user has actually configured, not just any available provider
|
|
63
63
|
await this.registry.loadFromAgentShield(projectId);
|
|
64
|
-
const
|
|
65
|
-
if (
|
|
66
|
-
// Log deprecation warning for Phase 1 tools
|
|
67
|
-
const firstProviderName = this.registry.getProviderNames()[0];
|
|
64
|
+
const configuredProvider = this.registry.getConfiguredProvider();
|
|
65
|
+
if (configuredProvider && this.registry.hasProvider(configuredProvider)) {
|
|
68
66
|
console.warn(`[ProviderResolver] Tool does not specify oauthProvider. ` +
|
|
69
|
-
`Using
|
|
70
|
-
`
|
|
71
|
-
return
|
|
67
|
+
`Using project-configured provider "${configuredProvider}" as fallback. ` +
|
|
68
|
+
`Consider explicitly setting oauthProvider in tool protection config.`);
|
|
69
|
+
return configuredProvider;
|
|
72
70
|
}
|
|
73
|
-
// Priority 4: Error if no provider
|
|
74
|
-
|
|
75
|
-
|
|
71
|
+
// Priority 4: Error if no provider is configured
|
|
72
|
+
// NOTE: We intentionally do NOT fall back to "first available provider" anymore
|
|
73
|
+
// because AgentShield returns ALL providers (even unconfigured ones).
|
|
74
|
+
// Only use providers explicitly configured by the user.
|
|
75
|
+
throw new Error(`Tool requires OAuth but no provider is configured for project "${projectId}". ` +
|
|
76
|
+
`Configure an OAuth provider in AgentShield dashboard.`);
|
|
76
77
|
}
|
|
77
78
|
/**
|
|
78
79
|
* Infer provider from scope prefixes
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider-resolver.js","sourceRoot":"","sources":["../../src/services/provider-resolver.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;;AAMH;;;;;;;;GAQG;AACH,MAAa,gBAAgB;IAEjB;IACA;IAFV,YACU,QAA+B,EAC/B,aAAiC;QADjC,aAAQ,GAAR,QAAQ,CAAuB;QAC/B,kBAAa,GAAb,aAAa,CAAoB;IACxC,CAAC;IAEJ;;;;;;;OAOG;IACH,KAAK,CAAC,eAAe,CACnB,cAA8B,EAC9B,SAAiB;QAEjB,0DAA0D;QAC1D,IAAI,cAAc,CAAC,aAAa,EAAE,CAAC;YACjC,4CAA4C;YAC5C,IAAI,IAAI,CAAC,QAAQ,CAAC,gBAAgB,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAClD,MAAM,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC;YACrD,CAAC;YACD,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,cAAc,CAAC,aAAa,CAAC,EAAE,CAAC;gBAC7D,MAAM,IAAI,KAAK,CACb,aAAa,cAAc,CAAC,aAAa,iCAAiC,SAAS,KAAK;oBACtF,mCAAmC,CACtC,CAAC;YACJ,CAAC;YACD,OAAO,cAAc,CAAC,aAAa,CAAC;QACtC,CAAC;QAED,gDAAgD;QAChD,MAAM,gBAAgB,GAAG,IAAI,CAAC,uBAAuB,CACnD,cAAc,CAAC,cAAc,IAAI,EAAE,CACpC,CAAC;QACF,IAAI,gBAAgB,EAAE,CAAC;YACrB,4CAA4C;YAC5C,IAAI,IAAI,CAAC,QAAQ,CAAC,gBAAgB,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAClD,MAAM,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC;YACrD,CAAC;YACD,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,gBAAgB,CAAC,EAAE,CAAC;gBAChD,OAAO,CAAC,GAAG,CACT,yCAAyC,gBAAgB,eAAe,CACzE,CAAC;gBACF,OAAO,gBAAgB,CAAC;YAC1B,CAAC;QACH,CAAC;QAED,
|
|
1
|
+
{"version":3,"file":"provider-resolver.js","sourceRoot":"","sources":["../../src/services/provider-resolver.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kya-os/mcp-i-core",
|
|
3
|
-
"version": "1.3.
|
|
3
|
+
"version": "1.3.1",
|
|
4
4
|
"description": "Core runtime and types for MCP-I framework",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
"prepublishOnly": "npm run build && node ../create-mcpi-app/scripts/validate-no-workspace.js"
|
|
29
29
|
},
|
|
30
30
|
"dependencies": {
|
|
31
|
-
"@kya-os/contracts": "^1.6.
|
|
31
|
+
"@kya-os/contracts": "^1.6.1",
|
|
32
32
|
"jose": "^5.6.3",
|
|
33
33
|
"json-canonicalize": "^2.0.0",
|
|
34
34
|
"zod": "^3.23.8"
|
|
@@ -95,12 +95,13 @@ describe("Phase 2 Regression Tests", () => {
|
|
|
95
95
|
} as any;
|
|
96
96
|
|
|
97
97
|
const mockRegistry = {
|
|
98
|
-
hasProvider: vi.fn().
|
|
98
|
+
hasProvider: vi.fn().mockImplementation((name: string) => name === "github"),
|
|
99
99
|
getAllProviders: vi.fn().mockReturnValue([
|
|
100
100
|
{ clientId: "github_client_id" },
|
|
101
101
|
]),
|
|
102
102
|
getProviderNames: vi.fn().mockReturnValue(["github"]),
|
|
103
103
|
loadFromAgentShield: vi.fn().mockResolvedValue(undefined),
|
|
104
|
+
getConfiguredProvider: vi.fn().mockReturnValue("github"), // configuredProvider is github
|
|
104
105
|
} as any;
|
|
105
106
|
|
|
106
107
|
const resolver = new ProviderResolver(mockRegistry, mockConfigService);
|
|
@@ -108,7 +109,7 @@ describe("Phase 2 Regression Tests", () => {
|
|
|
108
109
|
const toolProtection: ToolProtection = {
|
|
109
110
|
requiresDelegation: true,
|
|
110
111
|
requiredScopes: ["custom:scope"],
|
|
111
|
-
// No oauthProvider - should use fallback
|
|
112
|
+
// No oauthProvider - should use configuredProvider fallback
|
|
112
113
|
};
|
|
113
114
|
|
|
114
115
|
const consoleSpy = vi
|
|
@@ -122,7 +123,7 @@ describe("Phase 2 Regression Tests", () => {
|
|
|
122
123
|
|
|
123
124
|
expect(provider).toBe("github");
|
|
124
125
|
expect(consoleSpy).toHaveBeenCalledWith(
|
|
125
|
-
expect.stringContaining("
|
|
126
|
+
expect.stringContaining("project-configured provider")
|
|
126
127
|
);
|
|
127
128
|
|
|
128
129
|
consoleSpy.mockRestore();
|
|
@@ -244,12 +245,13 @@ describe("Phase 2 Regression Tests", () => {
|
|
|
244
245
|
} as any;
|
|
245
246
|
|
|
246
247
|
const mockRegistry = {
|
|
247
|
-
hasProvider: vi.fn().
|
|
248
|
+
hasProvider: vi.fn().mockImplementation((name: string) => name === "github"),
|
|
248
249
|
getAllProviders: vi.fn().mockReturnValue([
|
|
249
250
|
{ clientId: "github_client_id" },
|
|
250
251
|
]),
|
|
251
252
|
getProviderNames: vi.fn().mockReturnValue(["github"]),
|
|
252
253
|
loadFromAgentShield: vi.fn().mockResolvedValue(undefined),
|
|
254
|
+
getConfiguredProvider: vi.fn().mockReturnValue("github"), // configuredProvider is github
|
|
253
255
|
} as any;
|
|
254
256
|
|
|
255
257
|
const resolver = new ProviderResolver(mockRegistry, mockConfigService);
|
|
@@ -257,7 +259,7 @@ describe("Phase 2 Regression Tests", () => {
|
|
|
257
259
|
const toolProtection: ToolProtection = {
|
|
258
260
|
requiresDelegation: true,
|
|
259
261
|
requiredScopes: ["repo:read"],
|
|
260
|
-
// No oauthProvider - Phase 1 mode
|
|
262
|
+
// No oauthProvider - Phase 1 mode - uses configuredProvider fallback
|
|
261
263
|
};
|
|
262
264
|
|
|
263
265
|
const provider = await resolver.resolveProvider(
|
|
@@ -265,7 +267,7 @@ describe("Phase 2 Regression Tests", () => {
|
|
|
265
267
|
"test-project"
|
|
266
268
|
);
|
|
267
269
|
|
|
268
|
-
// Should fallback to
|
|
270
|
+
// Should fallback to configuredProvider
|
|
269
271
|
expect(provider).toBe("github");
|
|
270
272
|
});
|
|
271
273
|
});
|