@kya-os/mcp-i-core 1.2.3-canary.6 → 1.3.0

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.
Files changed (231) hide show
  1. package/.claude/settings.local.json +9 -0
  2. package/.turbo/turbo-build.log +4 -0
  3. package/.turbo/turbo-test$colon$coverage.log +4514 -0
  4. package/.turbo/turbo-test.log +2973 -0
  5. package/COMPLIANCE_IMPROVEMENT_REPORT.md +483 -0
  6. package/Composer 3.md +615 -0
  7. package/GPT-5.md +1169 -0
  8. package/OPUS-plan.md +352 -0
  9. package/PHASE_3_AND_4.1_SUMMARY.md +585 -0
  10. package/PHASE_3_SUMMARY.md +317 -0
  11. package/PHASE_4.1.3_SUMMARY.md +428 -0
  12. package/PHASE_4.1_COMPLETE.md +525 -0
  13. package/PHASE_4_USER_DID_IDENTITY_LINKING_PLAN.md +1240 -0
  14. package/SCHEMA_COMPLIANCE_REPORT.md +275 -0
  15. package/TEST_PLAN.md +571 -0
  16. package/coverage/coverage-final.json +57 -0
  17. package/dist/__tests__/utils/mock-providers.d.ts +1 -2
  18. package/dist/__tests__/utils/mock-providers.d.ts.map +1 -1
  19. package/dist/__tests__/utils/mock-providers.js.map +1 -1
  20. package/dist/cache/oauth-config-cache.d.ts +69 -0
  21. package/dist/cache/oauth-config-cache.d.ts.map +1 -0
  22. package/dist/cache/oauth-config-cache.js +76 -0
  23. package/dist/cache/oauth-config-cache.js.map +1 -0
  24. package/dist/identity/idp-token-resolver.d.ts +53 -0
  25. package/dist/identity/idp-token-resolver.d.ts.map +1 -0
  26. package/dist/identity/idp-token-resolver.js +108 -0
  27. package/dist/identity/idp-token-resolver.js.map +1 -0
  28. package/dist/identity/idp-token-storage.interface.d.ts +42 -0
  29. package/dist/identity/idp-token-storage.interface.d.ts.map +1 -0
  30. package/dist/identity/idp-token-storage.interface.js +12 -0
  31. package/dist/identity/idp-token-storage.interface.js.map +1 -0
  32. package/dist/identity/user-did-manager.d.ts +39 -1
  33. package/dist/identity/user-did-manager.d.ts.map +1 -1
  34. package/dist/identity/user-did-manager.js +69 -3
  35. package/dist/identity/user-did-manager.js.map +1 -1
  36. package/dist/index.d.ts +22 -0
  37. package/dist/index.d.ts.map +1 -1
  38. package/dist/index.js +39 -1
  39. package/dist/index.js.map +1 -1
  40. package/dist/runtime/audit-logger.d.ts +37 -0
  41. package/dist/runtime/audit-logger.d.ts.map +1 -0
  42. package/dist/runtime/audit-logger.js +9 -0
  43. package/dist/runtime/audit-logger.js.map +1 -0
  44. package/dist/runtime/base.d.ts +58 -2
  45. package/dist/runtime/base.d.ts.map +1 -1
  46. package/dist/runtime/base.js +266 -11
  47. package/dist/runtime/base.js.map +1 -1
  48. package/dist/services/access-control.service.d.ts.map +1 -1
  49. package/dist/services/access-control.service.js +200 -35
  50. package/dist/services/access-control.service.js.map +1 -1
  51. package/dist/services/authorization/authorization-registry.d.ts +29 -0
  52. package/dist/services/authorization/authorization-registry.d.ts.map +1 -0
  53. package/dist/services/authorization/authorization-registry.js +57 -0
  54. package/dist/services/authorization/authorization-registry.js.map +1 -0
  55. package/dist/services/authorization/types.d.ts +53 -0
  56. package/dist/services/authorization/types.d.ts.map +1 -0
  57. package/dist/services/authorization/types.js +10 -0
  58. package/dist/services/authorization/types.js.map +1 -0
  59. package/dist/services/batch-delegation.service.d.ts +53 -0
  60. package/dist/services/batch-delegation.service.d.ts.map +1 -0
  61. package/dist/services/batch-delegation.service.js +95 -0
  62. package/dist/services/batch-delegation.service.js.map +1 -0
  63. package/dist/services/oauth-config.service.d.ts +53 -0
  64. package/dist/services/oauth-config.service.d.ts.map +1 -0
  65. package/dist/services/oauth-config.service.js +117 -0
  66. package/dist/services/oauth-config.service.js.map +1 -0
  67. package/dist/services/oauth-provider-registry.d.ts +77 -0
  68. package/dist/services/oauth-provider-registry.d.ts.map +1 -0
  69. package/dist/services/oauth-provider-registry.js +112 -0
  70. package/dist/services/oauth-provider-registry.js.map +1 -0
  71. package/dist/services/oauth-service.d.ts +77 -0
  72. package/dist/services/oauth-service.d.ts.map +1 -0
  73. package/dist/services/oauth-service.js +348 -0
  74. package/dist/services/oauth-service.js.map +1 -0
  75. package/dist/services/oauth-token-retrieval.service.d.ts +49 -0
  76. package/dist/services/oauth-token-retrieval.service.d.ts.map +1 -0
  77. package/dist/services/oauth-token-retrieval.service.js +150 -0
  78. package/dist/services/oauth-token-retrieval.service.js.map +1 -0
  79. package/dist/services/provider-resolver.d.ts +48 -0
  80. package/dist/services/provider-resolver.d.ts.map +1 -0
  81. package/dist/services/provider-resolver.js +120 -0
  82. package/dist/services/provider-resolver.js.map +1 -0
  83. package/dist/services/provider-validator.d.ts +55 -0
  84. package/dist/services/provider-validator.d.ts.map +1 -0
  85. package/dist/services/provider-validator.js +135 -0
  86. package/dist/services/provider-validator.js.map +1 -0
  87. package/dist/services/tool-context-builder.d.ts +57 -0
  88. package/dist/services/tool-context-builder.d.ts.map +1 -0
  89. package/dist/services/tool-context-builder.js +125 -0
  90. package/dist/services/tool-context-builder.js.map +1 -0
  91. package/dist/services/tool-protection.service.d.ts +87 -10
  92. package/dist/services/tool-protection.service.d.ts.map +1 -1
  93. package/dist/services/tool-protection.service.js +282 -112
  94. package/dist/services/tool-protection.service.js.map +1 -1
  95. package/dist/types/oauth-required-error.d.ts +40 -0
  96. package/dist/types/oauth-required-error.d.ts.map +1 -0
  97. package/dist/types/oauth-required-error.js +40 -0
  98. package/dist/types/oauth-required-error.js.map +1 -0
  99. package/dist/utils/did-helpers.d.ts +33 -0
  100. package/dist/utils/did-helpers.d.ts.map +1 -1
  101. package/dist/utils/did-helpers.js +40 -0
  102. package/dist/utils/did-helpers.js.map +1 -1
  103. package/dist/utils/index.d.ts +1 -0
  104. package/dist/utils/index.d.ts.map +1 -1
  105. package/dist/utils/index.js +1 -0
  106. package/dist/utils/index.js.map +1 -1
  107. package/docs/API_REFERENCE.md +1362 -0
  108. package/docs/COMPLIANCE_MATRIX.md +691 -0
  109. package/docs/STATUSLIST2021_GUIDE.md +696 -0
  110. package/docs/W3C_VC_DELEGATION_GUIDE.md +710 -0
  111. package/package.json +24 -50
  112. package/scripts/audit-compliance.ts +724 -0
  113. package/src/__tests__/cache/tool-protection-cache.test.ts +640 -0
  114. package/src/__tests__/config/provider-runtime-config.test.ts +309 -0
  115. package/src/__tests__/delegation-e2e.test.ts +690 -0
  116. package/src/__tests__/identity/user-did-manager.test.ts +213 -0
  117. package/src/__tests__/index.test.ts +56 -0
  118. package/src/__tests__/integration/full-flow.test.ts +776 -0
  119. package/src/__tests__/integration.test.ts +281 -0
  120. package/src/__tests__/providers/base.test.ts +173 -0
  121. package/src/__tests__/providers/memory.test.ts +319 -0
  122. package/src/__tests__/regression/phase2-regression.test.ts +427 -0
  123. package/src/__tests__/runtime/audit-logger.test.ts +154 -0
  124. package/src/__tests__/runtime/base-extensions.test.ts +593 -0
  125. package/src/__tests__/runtime/base.test.ts +869 -0
  126. package/src/__tests__/runtime/delegation-flow.test.ts +164 -0
  127. package/src/__tests__/runtime/proof-client-did.test.ts +375 -0
  128. package/src/__tests__/runtime/route-interception.test.ts +686 -0
  129. package/src/__tests__/runtime/tool-protection-enforcement.test.ts +908 -0
  130. package/src/__tests__/services/agentshield-integration.test.ts +784 -0
  131. package/src/__tests__/services/provider-resolver-edge-cases.test.ts +487 -0
  132. package/src/__tests__/services/tool-protection-oauth-provider.test.ts +480 -0
  133. package/src/__tests__/services/tool-protection.service.test.ts +1366 -0
  134. package/src/__tests__/utils/mock-providers.ts +340 -0
  135. package/src/cache/oauth-config-cache.d.ts +69 -0
  136. package/src/cache/oauth-config-cache.d.ts.map +1 -0
  137. package/src/cache/oauth-config-cache.js +71 -0
  138. package/src/cache/oauth-config-cache.js.map +1 -0
  139. package/src/cache/oauth-config-cache.ts +123 -0
  140. package/src/cache/tool-protection-cache.ts +171 -0
  141. package/src/compliance/EXAMPLE.md +412 -0
  142. package/src/compliance/__tests__/schema-verifier.test.ts +797 -0
  143. package/src/compliance/index.ts +8 -0
  144. package/src/compliance/schema-registry.ts +460 -0
  145. package/src/compliance/schema-verifier.ts +708 -0
  146. package/src/config/__tests__/remote-config.spec.ts +268 -0
  147. package/src/config/remote-config.ts +174 -0
  148. package/src/config.ts +309 -0
  149. package/src/delegation/__tests__/audience-validator.test.ts +112 -0
  150. package/src/delegation/__tests__/bitstring.test.ts +346 -0
  151. package/src/delegation/__tests__/cascading-revocation.test.ts +628 -0
  152. package/src/delegation/__tests__/delegation-graph.test.ts +584 -0
  153. package/src/delegation/__tests__/utils.test.ts +152 -0
  154. package/src/delegation/__tests__/vc-issuer.test.ts +442 -0
  155. package/src/delegation/__tests__/vc-verifier.test.ts +922 -0
  156. package/src/delegation/audience-validator.ts +52 -0
  157. package/src/delegation/bitstring.ts +278 -0
  158. package/src/delegation/cascading-revocation.ts +370 -0
  159. package/src/delegation/delegation-graph.ts +299 -0
  160. package/src/delegation/index.ts +14 -0
  161. package/src/delegation/statuslist-manager.ts +353 -0
  162. package/src/delegation/storage/__tests__/memory-graph-storage.test.ts +366 -0
  163. package/src/delegation/storage/__tests__/memory-statuslist-storage.test.ts +228 -0
  164. package/src/delegation/storage/index.ts +9 -0
  165. package/src/delegation/storage/memory-graph-storage.ts +178 -0
  166. package/src/delegation/storage/memory-statuslist-storage.ts +77 -0
  167. package/src/delegation/utils.ts +42 -0
  168. package/src/delegation/vc-issuer.ts +232 -0
  169. package/src/delegation/vc-verifier.ts +568 -0
  170. package/src/identity/idp-token-resolver.ts +147 -0
  171. package/src/identity/idp-token-storage.interface.ts +59 -0
  172. package/src/identity/user-did-manager.ts +370 -0
  173. package/src/index.ts +260 -0
  174. package/src/providers/base.d.ts +91 -0
  175. package/src/providers/base.d.ts.map +1 -0
  176. package/src/providers/base.js +38 -0
  177. package/src/providers/base.js.map +1 -0
  178. package/src/providers/base.ts +96 -0
  179. package/src/providers/memory.ts +142 -0
  180. package/src/runtime/audit-logger.ts +39 -0
  181. package/src/runtime/base.ts +1329 -0
  182. package/src/services/__tests__/access-control.integration.test.ts +443 -0
  183. package/src/services/__tests__/access-control.proof-response-validation.test.ts +578 -0
  184. package/src/services/__tests__/access-control.service.test.ts +970 -0
  185. package/src/services/__tests__/batch-delegation.service.test.ts +351 -0
  186. package/src/services/__tests__/crypto.service.test.ts +531 -0
  187. package/src/services/__tests__/oauth-provider-registry.test.ts +142 -0
  188. package/src/services/__tests__/proof-verifier.integration.test.ts +485 -0
  189. package/src/services/__tests__/proof-verifier.test.ts +489 -0
  190. package/src/services/__tests__/provider-resolution.integration.test.ts +198 -0
  191. package/src/services/__tests__/provider-resolver.test.ts +217 -0
  192. package/src/services/__tests__/storage.service.test.ts +358 -0
  193. package/src/services/access-control.service.ts +990 -0
  194. package/src/services/authorization/authorization-registry.ts +66 -0
  195. package/src/services/authorization/types.ts +71 -0
  196. package/src/services/batch-delegation.service.ts +137 -0
  197. package/src/services/crypto.service.ts +302 -0
  198. package/src/services/errors.ts +76 -0
  199. package/src/services/index.ts +9 -0
  200. package/src/services/oauth-config.service.d.ts +53 -0
  201. package/src/services/oauth-config.service.d.ts.map +1 -0
  202. package/src/services/oauth-config.service.js +113 -0
  203. package/src/services/oauth-config.service.js.map +1 -0
  204. package/src/services/oauth-config.service.ts +166 -0
  205. package/src/services/oauth-provider-registry.d.ts +57 -0
  206. package/src/services/oauth-provider-registry.d.ts.map +1 -0
  207. package/src/services/oauth-provider-registry.js +73 -0
  208. package/src/services/oauth-provider-registry.js.map +1 -0
  209. package/src/services/oauth-provider-registry.ts +123 -0
  210. package/src/services/oauth-service.ts +510 -0
  211. package/src/services/oauth-token-retrieval.service.ts +245 -0
  212. package/src/services/proof-verifier.ts +478 -0
  213. package/src/services/provider-resolver.d.ts +48 -0
  214. package/src/services/provider-resolver.d.ts.map +1 -0
  215. package/src/services/provider-resolver.js +106 -0
  216. package/src/services/provider-resolver.js.map +1 -0
  217. package/src/services/provider-resolver.ts +144 -0
  218. package/src/services/provider-validator.ts +170 -0
  219. package/src/services/storage.service.ts +566 -0
  220. package/src/services/tool-context-builder.ts +172 -0
  221. package/src/services/tool-protection.service.ts +958 -0
  222. package/src/types/oauth-required-error.ts +63 -0
  223. package/src/types/tool-protection.ts +155 -0
  224. package/src/utils/__tests__/did-helpers.test.ts +101 -0
  225. package/src/utils/base64.ts +148 -0
  226. package/src/utils/cors.ts +83 -0
  227. package/src/utils/did-helpers.ts +150 -0
  228. package/src/utils/index.ts +8 -0
  229. package/src/utils/storage-keys.ts +278 -0
  230. package/tsconfig.json +21 -0
  231. package/vitest.config.ts +56 -0
@@ -0,0 +1,309 @@
1
+ /**
2
+ * Tests for ProviderRuntimeConfig
3
+ */
4
+
5
+ import { describe, it, expect, vi } from 'vitest';
6
+ import type { ProviderRuntimeConfig } from '../../config.js';
7
+ import type {
8
+ CryptoProvider,
9
+ ClockProvider,
10
+ FetchProvider,
11
+ StorageProvider,
12
+ NonceCacheProvider,
13
+ IdentityProvider
14
+ } from '../../providers/base.js';
15
+
16
+ describe('ProviderRuntimeConfig', () => {
17
+ // Mock providers for testing
18
+ const mockCryptoProvider: CryptoProvider = {
19
+ generateKeyPair: vi.fn(),
20
+ sign: vi.fn(),
21
+ verify: vi.fn(),
22
+ hash: vi.fn(),
23
+ randomBytes: vi.fn(),
24
+ };
25
+
26
+ const mockClockProvider: ClockProvider = {
27
+ now: vi.fn(() => Date.now()),
28
+ timestamp: vi.fn(() => new Date().toISOString()),
29
+ };
30
+
31
+ const mockFetchProvider: FetchProvider = {
32
+ fetch: vi.fn(),
33
+ };
34
+
35
+ const mockStorageProvider: StorageProvider = {
36
+ get: vi.fn(),
37
+ set: vi.fn(),
38
+ delete: vi.fn(),
39
+ list: vi.fn(),
40
+ };
41
+
42
+ const mockNonceCacheProvider: NonceCacheProvider = {
43
+ getNonce: vi.fn(),
44
+ setNonce: vi.fn(),
45
+ deleteNonce: vi.fn(),
46
+ };
47
+
48
+ const mockIdentityProvider: IdentityProvider = {
49
+ getIdentity: vi.fn(),
50
+ ensureIdentity: vi.fn(),
51
+ };
52
+
53
+ describe('Minimal configuration', () => {
54
+ it('should accept minimal valid config with all providers', () => {
55
+ const config: ProviderRuntimeConfig = {
56
+ environment: 'development',
57
+ cryptoProvider: mockCryptoProvider,
58
+ clockProvider: mockClockProvider,
59
+ fetchProvider: mockFetchProvider,
60
+ storageProvider: mockStorageProvider,
61
+ nonceCacheProvider: mockNonceCacheProvider,
62
+ identityProvider: mockIdentityProvider,
63
+ };
64
+
65
+ expect(config.environment).toBe('development');
66
+ expect(config.cryptoProvider).toBeDefined();
67
+ expect(config.clockProvider).toBeDefined();
68
+ expect(config.fetchProvider).toBeDefined();
69
+ expect(config.storageProvider).toBeDefined();
70
+ expect(config.nonceCacheProvider).toBeDefined();
71
+ expect(config.identityProvider).toBeDefined();
72
+ });
73
+ });
74
+
75
+ describe('Configuration with session', () => {
76
+ it('should accept session configuration', () => {
77
+ const config: ProviderRuntimeConfig = {
78
+ environment: 'production',
79
+ cryptoProvider: mockCryptoProvider,
80
+ clockProvider: mockClockProvider,
81
+ fetchProvider: mockFetchProvider,
82
+ storageProvider: mockStorageProvider,
83
+ nonceCacheProvider: mockNonceCacheProvider,
84
+ identityProvider: mockIdentityProvider,
85
+ session: {
86
+ timestampSkewSeconds: 60,
87
+ ttlMinutes: 15,
88
+ },
89
+ };
90
+
91
+ expect(config.session?.timestampSkewSeconds).toBe(60);
92
+ expect(config.session?.ttlMinutes).toBe(15);
93
+ });
94
+ });
95
+
96
+ describe('Configuration with identity', () => {
97
+ it('should accept identity configuration', () => {
98
+ const config: ProviderRuntimeConfig = {
99
+ environment: 'development',
100
+ cryptoProvider: mockCryptoProvider,
101
+ clockProvider: mockClockProvider,
102
+ fetchProvider: mockFetchProvider,
103
+ storageProvider: mockStorageProvider,
104
+ nonceCacheProvider: mockNonceCacheProvider,
105
+ identityProvider: mockIdentityProvider,
106
+ identity: {
107
+ enabled: true,
108
+ environment: 'development',
109
+ },
110
+ };
111
+
112
+ expect(config.identity?.enabled).toBe(true);
113
+ expect(config.identity?.environment).toBe('development');
114
+ });
115
+ });
116
+
117
+ describe('Configuration with proofing', () => {
118
+ it('should accept proofing configuration', () => {
119
+ const config: ProviderRuntimeConfig = {
120
+ environment: 'production',
121
+ cryptoProvider: mockCryptoProvider,
122
+ clockProvider: mockClockProvider,
123
+ fetchProvider: mockFetchProvider,
124
+ storageProvider: mockStorageProvider,
125
+ nonceCacheProvider: mockNonceCacheProvider,
126
+ identityProvider: mockIdentityProvider,
127
+ proofing: {
128
+ enabled: true,
129
+ batchQueue: {
130
+ destinations: [
131
+ {
132
+ type: 'agentshield',
133
+ apiUrl: 'https://kya.vouched.id',
134
+ apiKey: 'test-key',
135
+ },
136
+ ],
137
+ },
138
+ },
139
+ };
140
+
141
+ expect(config.proofing?.enabled).toBe(true);
142
+ expect(config.proofing?.batchQueue?.destinations).toHaveLength(1);
143
+ });
144
+ });
145
+
146
+ describe('Configuration with delegation', () => {
147
+ it('should accept delegation configuration', () => {
148
+ const config: ProviderRuntimeConfig = {
149
+ environment: 'production',
150
+ cryptoProvider: mockCryptoProvider,
151
+ clockProvider: mockClockProvider,
152
+ fetchProvider: mockFetchProvider,
153
+ storageProvider: mockStorageProvider,
154
+ nonceCacheProvider: mockNonceCacheProvider,
155
+ identityProvider: mockIdentityProvider,
156
+ delegation: {
157
+ enabled: true,
158
+ verifier: {
159
+ type: 'agentshield',
160
+ apiUrl: 'https://kya.vouched.id',
161
+ apiKey: 'test-key',
162
+ },
163
+ },
164
+ };
165
+
166
+ expect(config.delegation?.enabled).toBe(true);
167
+ expect(config.delegation?.verifier.type).toBe('agentshield');
168
+ });
169
+ });
170
+
171
+ describe('Configuration with tool protection', () => {
172
+ it('should accept tool protection source config', () => {
173
+ const config: ProviderRuntimeConfig = {
174
+ environment: 'development',
175
+ cryptoProvider: mockCryptoProvider,
176
+ clockProvider: mockClockProvider,
177
+ fetchProvider: mockFetchProvider,
178
+ storageProvider: mockStorageProvider,
179
+ nonceCacheProvider: mockNonceCacheProvider,
180
+ identityProvider: mockIdentityProvider,
181
+ toolProtection: {
182
+ source: 'inline',
183
+ inline: {
184
+ test_tool: {
185
+ requiresDelegation: true,
186
+ requiredScopes: ['test:execute'],
187
+ },
188
+ },
189
+ },
190
+ };
191
+
192
+ expect(config.toolProtection?.source).toBe('inline');
193
+ expect(config.toolProtection?.inline?.test_tool?.requiresDelegation).toBe(true);
194
+ });
195
+ });
196
+
197
+ describe('Complete configuration', () => {
198
+ it('should accept complete configuration with all features', () => {
199
+ const config: ProviderRuntimeConfig = {
200
+ environment: 'production',
201
+ cryptoProvider: mockCryptoProvider,
202
+ clockProvider: mockClockProvider,
203
+ fetchProvider: mockFetchProvider,
204
+ storageProvider: mockStorageProvider,
205
+ nonceCacheProvider: mockNonceCacheProvider,
206
+ identityProvider: mockIdentityProvider,
207
+ session: {
208
+ timestampSkewSeconds: 120,
209
+ ttlMinutes: 30,
210
+ },
211
+ identity: {
212
+ enabled: true,
213
+ environment: 'production',
214
+ },
215
+ proofing: {
216
+ enabled: true,
217
+ batchQueue: {
218
+ destinations: [
219
+ {
220
+ type: 'agentshield',
221
+ apiUrl: 'https://kya.vouched.id',
222
+ apiKey: 'as-key',
223
+ },
224
+ ],
225
+ maxBatchSize: 10,
226
+ flushIntervalMs: 5000,
227
+ },
228
+ },
229
+ delegation: {
230
+ enabled: true,
231
+ verifier: {
232
+ type: 'agentshield',
233
+ apiUrl: 'https://kya.vouched.id',
234
+ apiKey: 'as-key',
235
+ },
236
+ },
237
+ toolProtection: {
238
+ source: 'agentshield',
239
+ agentShield: {
240
+ apiUrl: 'https://kya.vouched.id',
241
+ apiKey: 'as-key',
242
+ },
243
+ },
244
+ audit: {
245
+ enabled: true,
246
+ includeProofHashes: false,
247
+ },
248
+ wellKnown: {
249
+ enabled: true,
250
+ serviceName: 'Test Service',
251
+ },
252
+ };
253
+
254
+ expect(config.environment).toBe('production');
255
+ expect(config.session?.timestampSkewSeconds).toBe(120);
256
+ expect(config.identity?.enabled).toBe(true);
257
+ expect(config.proofing?.enabled).toBe(true);
258
+ expect(config.delegation?.enabled).toBe(true);
259
+ expect(config.toolProtection?.source).toBe('agentshield');
260
+ expect(config.audit?.enabled).toBe(true);
261
+ expect(config.wellKnown?.enabled).toBe(true);
262
+ });
263
+ });
264
+
265
+ describe('Type composition', () => {
266
+ it('should extend MCPIBaseConfig', () => {
267
+ const config: ProviderRuntimeConfig = {
268
+ environment: 'development',
269
+ cryptoProvider: mockCryptoProvider,
270
+ clockProvider: mockClockProvider,
271
+ fetchProvider: mockFetchProvider,
272
+ storageProvider: mockStorageProvider,
273
+ nonceCacheProvider: mockNonceCacheProvider,
274
+ identityProvider: mockIdentityProvider,
275
+ audit: {
276
+ enabled: true,
277
+ },
278
+ wellKnown: {
279
+ enabled: true,
280
+ },
281
+ };
282
+
283
+ // MCPIBaseConfig fields should be available
284
+ expect(config.environment).toBeDefined();
285
+ expect(config.audit).toBeDefined();
286
+ expect(config.wellKnown).toBeDefined();
287
+ });
288
+
289
+ it('should require all providers', () => {
290
+ // This test validates that all providers are required
291
+ const config: ProviderRuntimeConfig = {
292
+ environment: 'development',
293
+ cryptoProvider: mockCryptoProvider,
294
+ clockProvider: mockClockProvider,
295
+ fetchProvider: mockFetchProvider,
296
+ storageProvider: mockStorageProvider,
297
+ nonceCacheProvider: mockNonceCacheProvider,
298
+ identityProvider: mockIdentityProvider,
299
+ };
300
+
301
+ expect(config.cryptoProvider).toBeDefined();
302
+ expect(config.clockProvider).toBeDefined();
303
+ expect(config.fetchProvider).toBeDefined();
304
+ expect(config.storageProvider).toBeDefined();
305
+ expect(config.nonceCacheProvider).toBeDefined();
306
+ expect(config.identityProvider).toBeDefined();
307
+ });
308
+ });
309
+ });