@google/gemini-cli-core 0.12.0-nightly.20251023.c4c0c0d1 → 0.12.0-preview.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 (258) hide show
  1. package/README.md +7 -5
  2. package/dist/index.d.ts +3 -0
  3. package/dist/index.js +2 -0
  4. package/dist/index.js.map +1 -1
  5. package/dist/src/agents/subagent-tool-wrapper.test.js +2 -4
  6. package/dist/src/agents/subagent-tool-wrapper.test.js.map +1 -1
  7. package/dist/src/code_assist/oauth2.d.ts +2 -2
  8. package/dist/src/code_assist/oauth2.js +53 -41
  9. package/dist/src/code_assist/oauth2.js.map +1 -1
  10. package/dist/src/code_assist/oauth2.test.js +65 -33
  11. package/dist/src/code_assist/oauth2.test.js.map +1 -1
  12. package/dist/src/code_assist/server.d.ts +3 -3
  13. package/dist/src/code_assist/server.js.map +1 -1
  14. package/dist/src/code_assist/setup.d.ts +2 -2
  15. package/dist/src/code_assist/setup.js.map +1 -1
  16. package/dist/src/config/config.d.ts +12 -3
  17. package/dist/src/config/config.js +35 -9
  18. package/dist/src/config/config.js.map +1 -1
  19. package/dist/src/config/config.test.js +58 -21
  20. package/dist/src/config/config.test.js.map +1 -1
  21. package/dist/src/config/storage.d.ts +1 -0
  22. package/dist/src/config/storage.js +3 -0
  23. package/dist/src/config/storage.js.map +1 -1
  24. package/dist/src/core/client.d.ts +1 -11
  25. package/dist/src/core/client.js +17 -165
  26. package/dist/src/core/client.js.map +1 -1
  27. package/dist/src/core/client.test.js +70 -405
  28. package/dist/src/core/client.test.js.map +1 -1
  29. package/dist/src/core/contentGenerator.js +39 -28
  30. package/dist/src/core/contentGenerator.js.map +1 -1
  31. package/dist/src/core/contentGenerator.test.js +28 -0
  32. package/dist/src/core/contentGenerator.test.js.map +1 -1
  33. package/dist/src/core/coreToolScheduler.d.ts +7 -7
  34. package/dist/src/core/coreToolScheduler.js +312 -183
  35. package/dist/src/core/coreToolScheduler.js.map +1 -1
  36. package/dist/src/core/coreToolScheduler.test.js +239 -9
  37. package/dist/src/core/coreToolScheduler.test.js.map +1 -1
  38. package/dist/src/core/fakeContentGenerator.d.ts +33 -0
  39. package/dist/src/core/fakeContentGenerator.js +58 -0
  40. package/dist/src/core/fakeContentGenerator.js.map +1 -0
  41. package/dist/src/core/fakeContentGenerator.test.d.ts +6 -0
  42. package/dist/src/core/fakeContentGenerator.test.js +127 -0
  43. package/dist/src/core/fakeContentGenerator.test.js.map +1 -0
  44. package/dist/src/core/loggingContentGenerator.d.ts +1 -0
  45. package/dist/src/core/loggingContentGenerator.js +113 -33
  46. package/dist/src/core/loggingContentGenerator.js.map +1 -1
  47. package/dist/src/core/nonInteractiveToolExecutor.js +5 -4
  48. package/dist/src/core/nonInteractiveToolExecutor.js.map +1 -1
  49. package/dist/src/core/prompts.test.js +30 -108
  50. package/dist/src/core/prompts.test.js.map +1 -1
  51. package/dist/src/core/recordingContentGenerator.d.ts +18 -0
  52. package/dist/src/core/recordingContentGenerator.js +77 -0
  53. package/dist/src/core/recordingContentGenerator.js.map +1 -0
  54. package/dist/src/core/recordingContentGenerator.test.d.ts +6 -0
  55. package/dist/src/core/recordingContentGenerator.test.js +101 -0
  56. package/dist/src/core/recordingContentGenerator.test.js.map +1 -0
  57. package/dist/src/fallback/handler.js +2 -0
  58. package/dist/src/fallback/handler.js.map +1 -1
  59. package/dist/src/generated/git-commit.d.ts +2 -2
  60. package/dist/src/generated/git-commit.js +2 -2
  61. package/dist/src/generated/git-commit.js.map +1 -1
  62. package/dist/src/index.d.ts +3 -0
  63. package/dist/src/index.js +3 -0
  64. package/dist/src/index.js.map +1 -1
  65. package/dist/src/mcp/google-auth-provider.d.ts +2 -0
  66. package/dist/src/mcp/google-auth-provider.js +19 -2
  67. package/dist/src/mcp/google-auth-provider.js.map +1 -1
  68. package/dist/src/mcp/google-auth-provider.test.js +42 -9
  69. package/dist/src/mcp/google-auth-provider.test.js.map +1 -1
  70. package/dist/src/mcp/oauth-provider.js +2 -2
  71. package/dist/src/mcp/oauth-provider.js.map +1 -1
  72. package/dist/src/mcp/oauth-provider.test.js +130 -0
  73. package/dist/src/mcp/oauth-provider.test.js.map +1 -1
  74. package/dist/src/mcp/oauth-token-storage.js +5 -4
  75. package/dist/src/mcp/oauth-token-storage.js.map +1 -1
  76. package/dist/src/mcp/oauth-token-storage.test.js +17 -11
  77. package/dist/src/mcp/oauth-token-storage.test.js.map +1 -1
  78. package/dist/src/mcp/oauth-utils.d.ts +7 -0
  79. package/dist/src/mcp/oauth-utils.js +19 -0
  80. package/dist/src/mcp/oauth-utils.js.map +1 -1
  81. package/dist/src/mcp/oauth-utils.test.js +32 -0
  82. package/dist/src/mcp/oauth-utils.test.js.map +1 -1
  83. package/dist/src/mcp/sa-impersonation-provider.d.ts +0 -6
  84. package/dist/src/mcp/sa-impersonation-provider.js +6 -23
  85. package/dist/src/mcp/sa-impersonation-provider.js.map +1 -1
  86. package/dist/src/mcp/token-storage/base-token-storage.test.js +75 -84
  87. package/dist/src/mcp/token-storage/base-token-storage.test.js.map +1 -1
  88. package/dist/src/mcp/token-storage/keychain-token-storage.d.ts +6 -2
  89. package/dist/src/mcp/token-storage/keychain-token-storage.js +62 -6
  90. package/dist/src/mcp/token-storage/keychain-token-storage.js.map +1 -1
  91. package/dist/src/mcp/token-storage/keychain-token-storage.test.js +54 -3
  92. package/dist/src/mcp/token-storage/keychain-token-storage.test.js.map +1 -1
  93. package/dist/src/mcp/token-storage/types.d.ts +6 -0
  94. package/dist/src/mcp/token-storage/types.js.map +1 -1
  95. package/dist/src/policy/policy-engine.js +4 -0
  96. package/dist/src/policy/policy-engine.js.map +1 -1
  97. package/dist/src/services/chatCompressionService.d.ts +32 -0
  98. package/dist/src/services/chatCompressionService.js +164 -0
  99. package/dist/src/services/chatCompressionService.js.map +1 -0
  100. package/dist/src/services/chatCompressionService.test.d.ts +6 -0
  101. package/dist/src/services/chatCompressionService.test.js +211 -0
  102. package/dist/src/services/chatCompressionService.test.js.map +1 -0
  103. package/dist/src/services/fileDiscoveryService.d.ts +0 -8
  104. package/dist/src/services/fileDiscoveryService.js +5 -33
  105. package/dist/src/services/fileDiscoveryService.js.map +1 -1
  106. package/dist/src/services/fileDiscoveryService.test.js +11 -11
  107. package/dist/src/services/fileDiscoveryService.test.js.map +1 -1
  108. package/dist/src/services/loopDetectionService.js +19 -9
  109. package/dist/src/services/loopDetectionService.js.map +1 -1
  110. package/dist/src/services/loopDetectionService.test.js +40 -11
  111. package/dist/src/services/loopDetectionService.test.js.map +1 -1
  112. package/dist/src/telemetry/clearcut-logger/clearcut-logger.d.ts +1 -0
  113. package/dist/src/telemetry/clearcut-logger/clearcut-logger.js +40 -33
  114. package/dist/src/telemetry/clearcut-logger/clearcut-logger.js.map +1 -1
  115. package/dist/src/telemetry/clearcut-logger/clearcut-logger.test.js +1 -1
  116. package/dist/src/telemetry/clearcut-logger/clearcut-logger.test.js.map +1 -1
  117. package/dist/src/telemetry/index.d.ts +1 -0
  118. package/dist/src/telemetry/index.js +1 -0
  119. package/dist/src/telemetry/index.js.map +1 -1
  120. package/dist/src/telemetry/loggers.js +10 -17
  121. package/dist/src/telemetry/loggers.js.map +1 -1
  122. package/dist/src/telemetry/loggers.test.js +173 -30
  123. package/dist/src/telemetry/loggers.test.js.map +1 -1
  124. package/dist/src/telemetry/metrics.d.ts +1 -1
  125. package/dist/src/telemetry/metrics.js +1 -1
  126. package/dist/src/telemetry/metrics.js.map +1 -1
  127. package/dist/src/telemetry/metrics.test.js +2 -2
  128. package/dist/src/telemetry/metrics.test.js.map +1 -1
  129. package/dist/src/telemetry/semantic.d.ts +82 -0
  130. package/dist/src/telemetry/semantic.js +269 -0
  131. package/dist/src/telemetry/semantic.js.map +1 -0
  132. package/dist/src/telemetry/semantic.test.d.ts +6 -0
  133. package/dist/src/telemetry/semantic.test.js +387 -0
  134. package/dist/src/telemetry/semantic.test.js.map +1 -0
  135. package/dist/src/telemetry/trace.d.ts +46 -0
  136. package/dist/src/telemetry/trace.js +121 -0
  137. package/dist/src/telemetry/trace.js.map +1 -0
  138. package/dist/src/telemetry/types.d.ts +37 -18
  139. package/dist/src/telemetry/types.js +107 -36
  140. package/dist/src/telemetry/types.js.map +1 -1
  141. package/dist/src/telemetry/uiTelemetry.js +6 -6
  142. package/dist/src/telemetry/uiTelemetry.js.map +1 -1
  143. package/dist/src/telemetry/uiTelemetry.test.js +88 -66
  144. package/dist/src/telemetry/uiTelemetry.test.js.map +1 -1
  145. package/dist/src/tools/edit.d.ts +3 -2
  146. package/dist/src/tools/edit.js +15 -11
  147. package/dist/src/tools/edit.js.map +1 -1
  148. package/dist/src/tools/edit.test.js +19 -0
  149. package/dist/src/tools/edit.test.js.map +1 -1
  150. package/dist/src/tools/glob.js +4 -2
  151. package/dist/src/tools/glob.js.map +1 -1
  152. package/dist/src/tools/glob.test.js +203 -199
  153. package/dist/src/tools/glob.test.js.map +1 -1
  154. package/dist/src/tools/grep.js +2 -2
  155. package/dist/src/tools/grep.js.map +1 -1
  156. package/dist/src/tools/ls.js +2 -1
  157. package/dist/src/tools/ls.js.map +1 -1
  158. package/dist/src/tools/ls.test.js +0 -7
  159. package/dist/src/tools/ls.test.js.map +1 -1
  160. package/dist/src/tools/mcp-client-manager.js +2 -1
  161. package/dist/src/tools/mcp-client-manager.js.map +1 -1
  162. package/dist/src/tools/mcp-client.d.ts +4 -1
  163. package/dist/src/tools/mcp-client.js +71 -92
  164. package/dist/src/tools/mcp-client.js.map +1 -1
  165. package/dist/src/tools/mcp-client.test.js +16 -6
  166. package/dist/src/tools/mcp-client.test.js.map +1 -1
  167. package/dist/src/tools/mcp-tool.d.ts +3 -2
  168. package/dist/src/tools/mcp-tool.js +12 -10
  169. package/dist/src/tools/mcp-tool.js.map +1 -1
  170. package/dist/src/tools/memoryTool.d.ts +5 -3
  171. package/dist/src/tools/memoryTool.js +9 -7
  172. package/dist/src/tools/memoryTool.js.map +1 -1
  173. package/dist/src/tools/read-file.js +7 -3
  174. package/dist/src/tools/read-file.js.map +1 -1
  175. package/dist/src/tools/read-file.test.js +25 -2
  176. package/dist/src/tools/read-file.test.js.map +1 -1
  177. package/dist/src/tools/shell.d.ts +6 -4
  178. package/dist/src/tools/shell.js +18 -12
  179. package/dist/src/tools/shell.js.map +1 -1
  180. package/dist/src/tools/shell.test.js +7 -0
  181. package/dist/src/tools/shell.test.js.map +1 -1
  182. package/dist/src/tools/smart-edit.d.ts +2 -1
  183. package/dist/src/tools/smart-edit.js +10 -9
  184. package/dist/src/tools/smart-edit.js.map +1 -1
  185. package/dist/src/tools/tool-registry.d.ts +5 -1
  186. package/dist/src/tools/tool-registry.js +10 -3
  187. package/dist/src/tools/tool-registry.js.map +1 -1
  188. package/dist/src/tools/tools.d.ts +6 -0
  189. package/dist/src/tools/tools.js +29 -17
  190. package/dist/src/tools/tools.js.map +1 -1
  191. package/dist/src/tools/web-fetch.js +1 -12
  192. package/dist/src/tools/web-fetch.js.map +1 -1
  193. package/dist/src/tools/web-fetch.test.js +2 -2
  194. package/dist/src/tools/web-fetch.test.js.map +1 -1
  195. package/dist/src/tools/write-file.d.ts +2 -1
  196. package/dist/src/tools/write-file.js +6 -6
  197. package/dist/src/tools/write-file.js.map +1 -1
  198. package/dist/src/tools/write-todos.d.ts +2 -1
  199. package/dist/src/tools/write-todos.js +5 -2
  200. package/dist/src/tools/write-todos.js.map +1 -1
  201. package/dist/src/utils/environmentContext.d.ts +2 -1
  202. package/dist/src/utils/environmentContext.js +18 -0
  203. package/dist/src/utils/environmentContext.js.map +1 -1
  204. package/dist/src/utils/errorParsing.d.ts +1 -1
  205. package/dist/src/utils/errorParsing.js +5 -33
  206. package/dist/src/utils/errorParsing.js.map +1 -1
  207. package/dist/src/utils/errorParsing.test.js +0 -88
  208. package/dist/src/utils/errorParsing.test.js.map +1 -1
  209. package/dist/src/utils/errors.d.ts +3 -0
  210. package/dist/src/utils/errors.js +6 -0
  211. package/dist/src/utils/errors.js.map +1 -1
  212. package/dist/src/utils/events.d.ts +19 -1
  213. package/dist/src/utils/events.js +9 -0
  214. package/dist/src/utils/events.js.map +1 -1
  215. package/dist/src/utils/extensionLoader.d.ts +38 -0
  216. package/dist/src/utils/extensionLoader.js +20 -0
  217. package/dist/src/utils/extensionLoader.js.map +1 -0
  218. package/dist/src/utils/flashFallback.test.js +26 -45
  219. package/dist/src/utils/flashFallback.test.js.map +1 -1
  220. package/dist/src/utils/getFolderStructure.js +7 -16
  221. package/dist/src/utils/getFolderStructure.js.map +1 -1
  222. package/dist/src/utils/googleErrors.d.ts +104 -0
  223. package/dist/src/utils/googleErrors.js +152 -0
  224. package/dist/src/utils/googleErrors.js.map +1 -0
  225. package/dist/src/utils/googleErrors.test.d.ts +6 -0
  226. package/dist/src/utils/googleErrors.test.js +301 -0
  227. package/dist/src/utils/googleErrors.test.js.map +1 -0
  228. package/dist/src/utils/googleQuotaErrors.d.ts +35 -0
  229. package/dist/src/utils/googleQuotaErrors.js +131 -0
  230. package/dist/src/utils/googleQuotaErrors.js.map +1 -0
  231. package/dist/src/utils/googleQuotaErrors.test.d.ts +6 -0
  232. package/dist/src/utils/googleQuotaErrors.test.js +281 -0
  233. package/dist/src/utils/googleQuotaErrors.test.js.map +1 -0
  234. package/dist/src/utils/ignorePatterns.test.js +26 -30
  235. package/dist/src/utils/ignorePatterns.test.js.map +1 -1
  236. package/dist/src/utils/memoryDiscovery.d.ts +2 -2
  237. package/dist/src/utils/memoryDiscovery.js +3 -2
  238. package/dist/src/utils/memoryDiscovery.js.map +1 -1
  239. package/dist/src/utils/memoryDiscovery.test.js +19 -35
  240. package/dist/src/utils/memoryDiscovery.test.js.map +1 -1
  241. package/dist/src/utils/paths.js +126 -26
  242. package/dist/src/utils/paths.js.map +1 -1
  243. package/dist/src/utils/paths.test.js +200 -68
  244. package/dist/src/utils/paths.test.js.map +1 -1
  245. package/dist/src/utils/quotaErrorDetection.d.ts +0 -2
  246. package/dist/src/utils/quotaErrorDetection.js +0 -46
  247. package/dist/src/utils/quotaErrorDetection.js.map +1 -1
  248. package/dist/src/utils/retry.js +41 -145
  249. package/dist/src/utils/retry.js.map +1 -1
  250. package/dist/src/utils/retry.test.js +31 -110
  251. package/dist/src/utils/retry.test.js.map +1 -1
  252. package/dist/src/utils/shell-utils.test.js +70 -0
  253. package/dist/src/utils/shell-utils.test.js.map +1 -1
  254. package/dist/src/utils/workspaceContext.js +1 -1
  255. package/dist/src/utils/workspaceContext.js.map +1 -1
  256. package/dist/tsconfig.tsbuildinfo +1 -1
  257. package/package.json +2 -2
  258. package/dist/google-gemini-cli-core-0.12.0-nightly.20251022.0542de95.tgz +0 -0
@@ -4,7 +4,8 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
  import { GoogleAuth } from 'google-auth-library';
7
- const fiveMinBufferMs = 5 * 60 * 1000;
7
+ import { OAuthUtils, FIVE_MIN_BUFFER_MS } from './oauth-utils.js';
8
+ import { coreEvents } from '../utils/events.js';
8
9
  function createIamApiUrl(targetSA) {
9
10
  return `https://iamcredentials.googleapis.com/v1/projects/-/serviceAccounts/${encodeURIComponent(targetSA)}:generateIdToken`;
10
11
  }
@@ -51,7 +52,7 @@ export class ServiceAccountImpersonationProvider {
51
52
  // 1. Check if we have a valid, non-expired cached token.
52
53
  if (this.cachedToken &&
53
54
  this.tokenExpiryTime &&
54
- Date.now() < this.tokenExpiryTime - fiveMinBufferMs) {
55
+ Date.now() < this.tokenExpiryTime - FIVE_MIN_BUFFER_MS) {
55
56
  return this.cachedToken;
56
57
  }
57
58
  // 2. Clear any invalid/expired cache.
@@ -72,15 +73,15 @@ export class ServiceAccountImpersonationProvider {
72
73
  });
73
74
  idToken = res.data.token;
74
75
  if (!idToken || idToken.length === 0) {
75
- console.error('Failed to get ID token from Google');
76
+ coreEvents.emitFeedback('error', 'Failed to obtain authentication token.');
76
77
  return undefined;
77
78
  }
78
79
  }
79
80
  catch (e) {
80
- console.error('Failed to fetch ID token from Google:', e);
81
+ coreEvents.emitFeedback('error', 'Failed to obtain authentication token.', e);
81
82
  return undefined;
82
83
  }
83
- const expiryTime = this.parseTokenExpiry(idToken);
84
+ const expiryTime = OAuthUtils.parseTokenExpiry(idToken);
84
85
  // Note: We are placing the OIDC ID Token into the `access_token` field.
85
86
  // This is because the CLI uses this field to construct the
86
87
  // `Authorization: Bearer <token>` header, which is the correct way to
@@ -108,23 +109,5 @@ export class ServiceAccountImpersonationProvider {
108
109
  // No-op
109
110
  return '';
110
111
  }
111
- /**
112
- * Parses a JWT string to extract its expiry time.
113
- * @param idToken The JWT ID token.
114
- * @returns The expiry time in **milliseconds**, or undefined if parsing fails.
115
- */
116
- parseTokenExpiry(idToken) {
117
- try {
118
- const payload = JSON.parse(Buffer.from(idToken.split('.')[1], 'base64').toString());
119
- if (payload && typeof payload.exp === 'number') {
120
- return payload.exp * 1000; // Convert seconds to milliseconds
121
- }
122
- }
123
- catch (e) {
124
- console.error('Failed to parse ID token for expiry time with error:', e);
125
- }
126
- // Return undefined if try block fails or 'exp' is missing/invalid
127
- return undefined;
128
- }
129
112
  }
130
113
  //# sourceMappingURL=sa-impersonation-provider.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"sa-impersonation-provider.js","sourceRoot":"","sources":["../../../src/mcp/sa-impersonation-provider.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sa-impersonation-provider.js","sourceRoot":"","sources":["../../../src/mcp/sa-impersonation-provider.ts"],"names":[],"mappings":"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"}
@@ -53,107 +53,98 @@ describe('BaseTokenStorage', () => {
53
53
  };
54
54
  expect(() => storage.validateCredentials(credentials)).not.toThrow();
55
55
  });
56
- it('should throw for missing server name', () => {
57
- const credentials = {
58
- serverName: '',
59
- token: {
60
- accessToken: 'access-token',
61
- tokenType: 'Bearer',
56
+ it.each([
57
+ {
58
+ desc: 'missing server name',
59
+ credentials: {
60
+ serverName: '',
61
+ token: {
62
+ accessToken: 'access-token',
63
+ tokenType: 'Bearer',
64
+ },
65
+ updatedAt: Date.now(),
62
66
  },
63
- updatedAt: Date.now(),
64
- };
65
- expect(() => storage.validateCredentials(credentials)).toThrow('Server name is required');
66
- });
67
- it('should throw for missing token', () => {
68
- const credentials = {
69
- serverName: 'test-server',
70
- token: null,
71
- updatedAt: Date.now(),
72
- };
73
- expect(() => storage.validateCredentials(credentials)).toThrow('Token is required');
74
- });
75
- it('should throw for missing access token', () => {
76
- const credentials = {
77
- serverName: 'test-server',
78
- token: {
79
- accessToken: '',
80
- tokenType: 'Bearer',
67
+ expectedError: 'Server name is required',
68
+ },
69
+ {
70
+ desc: 'missing token',
71
+ credentials: {
72
+ serverName: 'test-server',
73
+ token: null,
74
+ updatedAt: Date.now(),
81
75
  },
82
- updatedAt: Date.now(),
83
- };
84
- expect(() => storage.validateCredentials(credentials)).toThrow('Access token is required');
85
- });
86
- it('should throw for missing token type', () => {
87
- const credentials = {
88
- serverName: 'test-server',
89
- token: {
90
- accessToken: 'access-token',
91
- tokenType: '',
76
+ expectedError: 'Token is required',
77
+ },
78
+ {
79
+ desc: 'missing access token',
80
+ credentials: {
81
+ serverName: 'test-server',
82
+ token: {
83
+ accessToken: '',
84
+ tokenType: 'Bearer',
85
+ },
86
+ updatedAt: Date.now(),
92
87
  },
93
- updatedAt: Date.now(),
94
- };
95
- expect(() => storage.validateCredentials(credentials)).toThrow('Token type is required');
88
+ expectedError: 'Access token is required',
89
+ },
90
+ {
91
+ desc: 'missing token type',
92
+ credentials: {
93
+ serverName: 'test-server',
94
+ token: {
95
+ accessToken: 'access-token',
96
+ tokenType: '',
97
+ },
98
+ updatedAt: Date.now(),
99
+ },
100
+ expectedError: 'Token type is required',
101
+ },
102
+ ])('should throw for $desc', ({ credentials, expectedError }) => {
103
+ expect(() => storage.validateCredentials(credentials)).toThrow(expectedError);
96
104
  });
97
105
  });
98
106
  describe('isTokenExpired', () => {
99
- it('should return false for tokens without expiry', () => {
107
+ it.each([
108
+ ['tokens without expiry', undefined, false],
109
+ ['valid tokens', Date.now() + 3600000, false],
110
+ ['expired tokens', Date.now() - 3600000, true],
111
+ [
112
+ 'tokens within 5-minute buffer (4 minutes from now)',
113
+ Date.now() + 4 * 60 * 1000,
114
+ true,
115
+ ],
116
+ ])('should return %s for %s', (_, expiresAt, expected) => {
100
117
  const credentials = {
101
118
  serverName: 'test-server',
102
119
  token: {
103
120
  accessToken: 'access-token',
104
121
  tokenType: 'Bearer',
122
+ ...(expiresAt !== undefined && { expiresAt }),
105
123
  },
106
124
  updatedAt: Date.now(),
107
125
  };
108
- expect(storage.isTokenExpired(credentials)).toBe(false);
109
- });
110
- it('should return false for valid tokens', () => {
111
- const credentials = {
112
- serverName: 'test-server',
113
- token: {
114
- accessToken: 'access-token',
115
- tokenType: 'Bearer',
116
- expiresAt: Date.now() + 3600000,
117
- },
118
- updatedAt: Date.now(),
119
- };
120
- expect(storage.isTokenExpired(credentials)).toBe(false);
121
- });
122
- it('should return true for expired tokens', () => {
123
- const credentials = {
124
- serverName: 'test-server',
125
- token: {
126
- accessToken: 'access-token',
127
- tokenType: 'Bearer',
128
- expiresAt: Date.now() - 3600000,
129
- },
130
- updatedAt: Date.now(),
131
- };
132
- expect(storage.isTokenExpired(credentials)).toBe(true);
133
- });
134
- it('should apply 5-minute buffer for expiry check', () => {
135
- const fourMinutesFromNow = Date.now() + 4 * 60 * 1000;
136
- const credentials = {
137
- serverName: 'test-server',
138
- token: {
139
- accessToken: 'access-token',
140
- tokenType: 'Bearer',
141
- expiresAt: fourMinutesFromNow,
142
- },
143
- updatedAt: Date.now(),
144
- };
145
- expect(storage.isTokenExpired(credentials)).toBe(true);
126
+ expect(storage.isTokenExpired(credentials)).toBe(expected);
146
127
  });
147
128
  });
148
129
  describe('sanitizeServerName', () => {
149
- it('should keep valid characters', () => {
150
- expect(storage.sanitizeServerName('test-server.example_123')).toBe('test-server.example_123');
151
- });
152
- it('should replace invalid characters with underscore', () => {
153
- expect(storage.sanitizeServerName('test@server#example')).toBe('test_server_example');
154
- });
155
- it('should handle special characters', () => {
156
- expect(storage.sanitizeServerName('test server/example:123')).toBe('test_server_example_123');
130
+ it.each([
131
+ [
132
+ 'valid characters',
133
+ 'test-server.example_123',
134
+ 'test-server.example_123',
135
+ ],
136
+ [
137
+ 'invalid characters with underscore replacement',
138
+ 'test@server#example',
139
+ 'test_server_example',
140
+ ],
141
+ [
142
+ 'special characters',
143
+ 'test server/example:123',
144
+ 'test_server_example_123',
145
+ ],
146
+ ])('should handle %s', (_, input, expected) => {
147
+ expect(storage.sanitizeServerName(input)).toBe(expected);
157
148
  });
158
149
  });
159
150
  });
@@ -1 +1 @@
1
- {"version":3,"file":"base-token-storage.test.js","sourceRoot":"","sources":["../../../../src/mcp/token-storage/base-token-storage.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"base-token-storage.test.js","sourceRoot":"","sources":["../../../../src/mcp/token-storage/base-token-storage.test.ts"],"names":[],"mappings":"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"}
@@ -4,7 +4,7 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
  import { BaseTokenStorage } from './base-token-storage.js';
7
- import type { OAuthCredentials } from './types.js';
7
+ import type { OAuthCredentials, SecretStorage } from './types.js';
8
8
  interface Keytar {
9
9
  getPassword(service: string, account: string): Promise<string | null>;
10
10
  setPassword(service: string, account: string, password: string): Promise<void>;
@@ -14,7 +14,7 @@ interface Keytar {
14
14
  password: string;
15
15
  }>>;
16
16
  }
17
- export declare class KeychainTokenStorage extends BaseTokenStorage {
17
+ export declare class KeychainTokenStorage extends BaseTokenStorage implements SecretStorage {
18
18
  private keychainAvailable;
19
19
  private keytarModule;
20
20
  private keytarLoadAttempted;
@@ -27,5 +27,9 @@ export declare class KeychainTokenStorage extends BaseTokenStorage {
27
27
  clearAll(): Promise<void>;
28
28
  checkKeychainAvailability(): Promise<boolean>;
29
29
  isAvailable(): Promise<boolean>;
30
+ setSecret(key: string, value: string): Promise<void>;
31
+ getSecret(key: string): Promise<string | null>;
32
+ deleteSecret(key: string): Promise<void>;
33
+ listSecrets(): Promise<string[]>;
30
34
  }
31
35
  export {};
@@ -5,7 +5,9 @@
5
5
  */
6
6
  import * as crypto from 'node:crypto';
7
7
  import { BaseTokenStorage } from './base-token-storage.js';
8
+ import { coreEvents } from '../../utils/events.js';
8
9
  const KEYCHAIN_TEST_PREFIX = '__keychain_test__';
10
+ const SECRET_PREFIX = '__secret__';
9
11
  export class KeychainTokenStorage extends BaseTokenStorage {
10
12
  keychainAvailable = null;
11
13
  keytarModule = null;
@@ -23,7 +25,7 @@ export class KeychainTokenStorage extends BaseTokenStorage {
23
25
  this.keytarModule = module.default || module;
24
26
  }
25
27
  catch (error) {
26
- console.error(error);
28
+ coreEvents.emitFeedback('error', "Failed to load 'keytar' module", error);
27
29
  }
28
30
  return this.keytarModule;
29
31
  }
@@ -96,11 +98,12 @@ export class KeychainTokenStorage extends BaseTokenStorage {
96
98
  try {
97
99
  const credentials = await keytar.findCredentials(this.serviceName);
98
100
  return credentials
99
- .filter((cred) => !cred.account.startsWith(KEYCHAIN_TEST_PREFIX))
101
+ .filter((cred) => !cred.account.startsWith(KEYCHAIN_TEST_PREFIX) &&
102
+ !cred.account.startsWith(SECRET_PREFIX))
100
103
  .map((cred) => cred.account);
101
104
  }
102
105
  catch (error) {
103
- console.error('Failed to list servers from keychain:', error);
106
+ coreEvents.emitFeedback('error', 'Failed to list servers from keychain', error);
104
107
  return [];
105
108
  }
106
109
  }
@@ -114,7 +117,8 @@ export class KeychainTokenStorage extends BaseTokenStorage {
114
117
  }
115
118
  const result = new Map();
116
119
  try {
117
- const credentials = (await keytar.findCredentials(this.serviceName)).filter((c) => !c.account.startsWith(KEYCHAIN_TEST_PREFIX));
120
+ const credentials = (await keytar.findCredentials(this.serviceName)).filter((c) => !c.account.startsWith(KEYCHAIN_TEST_PREFIX) &&
121
+ !c.account.startsWith(SECRET_PREFIX));
118
122
  for (const cred of credentials) {
119
123
  try {
120
124
  const data = JSON.parse(cred.password);
@@ -123,12 +127,12 @@ export class KeychainTokenStorage extends BaseTokenStorage {
123
127
  }
124
128
  }
125
129
  catch (error) {
126
- console.error(`Failed to parse credentials for ${cred.account}:`, error);
130
+ coreEvents.emitFeedback('error', `Failed to parse credentials for ${cred.account}`, error);
127
131
  }
128
132
  }
129
133
  }
130
134
  catch (error) {
131
- console.error('Failed to get all credentials from keychain:', error);
135
+ coreEvents.emitFeedback('error', 'Failed to get all credentials from keychain', error);
132
136
  }
133
137
  return result;
134
138
  }
@@ -186,5 +190,57 @@ export class KeychainTokenStorage extends BaseTokenStorage {
186
190
  async isAvailable() {
187
191
  return this.checkKeychainAvailability();
188
192
  }
193
+ async setSecret(key, value) {
194
+ if (!(await this.checkKeychainAvailability())) {
195
+ throw new Error('Keychain is not available');
196
+ }
197
+ const keytar = await this.getKeytar();
198
+ if (!keytar) {
199
+ throw new Error('Keytar module not available');
200
+ }
201
+ await keytar.setPassword(this.serviceName, `${SECRET_PREFIX}${key}`, value);
202
+ }
203
+ async getSecret(key) {
204
+ if (!(await this.checkKeychainAvailability())) {
205
+ throw new Error('Keychain is not available');
206
+ }
207
+ const keytar = await this.getKeytar();
208
+ if (!keytar) {
209
+ throw new Error('Keytar module not available');
210
+ }
211
+ return keytar.getPassword(this.serviceName, `${SECRET_PREFIX}${key}`);
212
+ }
213
+ async deleteSecret(key) {
214
+ if (!(await this.checkKeychainAvailability())) {
215
+ throw new Error('Keychain is not available');
216
+ }
217
+ const keytar = await this.getKeytar();
218
+ if (!keytar) {
219
+ throw new Error('Keytar module not available');
220
+ }
221
+ const deleted = await keytar.deletePassword(this.serviceName, `${SECRET_PREFIX}${key}`);
222
+ if (!deleted) {
223
+ throw new Error(`No secret found for key: ${key}`);
224
+ }
225
+ }
226
+ async listSecrets() {
227
+ if (!(await this.checkKeychainAvailability())) {
228
+ throw new Error('Keychain is not available');
229
+ }
230
+ const keytar = await this.getKeytar();
231
+ if (!keytar) {
232
+ throw new Error('Keytar module not available');
233
+ }
234
+ try {
235
+ const credentials = await keytar.findCredentials(this.serviceName);
236
+ return credentials
237
+ .filter((cred) => cred.account.startsWith(SECRET_PREFIX))
238
+ .map((cred) => cred.account.substring(SECRET_PREFIX.length));
239
+ }
240
+ catch (error) {
241
+ console.error('Failed to list secrets from keychain:', error);
242
+ return [];
243
+ }
244
+ }
189
245
  }
190
246
  //# sourceMappingURL=keychain-token-storage.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"keychain-token-storage.js","sourceRoot":"","sources":["../../../../src/mcp/token-storage/keychain-token-storage.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"keychain-token-storage.js","sourceRoot":"","sources":["../../../../src/mcp/token-storage/keychain-token-storage.ts"],"names":[],"mappings":"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"}
@@ -4,6 +4,7 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
  import { describe, it, expect, beforeEach, afterEach, vi } from 'vitest';
7
+ import { coreEvents } from '../../utils/events.js';
7
8
  // Hoist the mock to be available in the vi.mock factory
8
9
  const mockKeytar = vi.hoisted(() => ({
9
10
  getPassword: vi.fn(),
@@ -22,6 +23,11 @@ vi.mock('node:crypto', () => ({
22
23
  toString: vi.fn(() => mockCryptoRandomBytesString),
23
24
  })),
24
25
  }));
26
+ vi.mock('../../utils/events.js', () => ({
27
+ coreEvents: {
28
+ emitFeedback: vi.fn(),
29
+ },
30
+ }));
25
31
  describe('KeychainTokenStorage', () => {
26
32
  let storage;
27
33
  beforeEach(async () => {
@@ -56,7 +62,8 @@ describe('KeychainTokenStorage', () => {
56
62
  expect(mockKeytar.deletePassword).toHaveBeenCalledWith(mockServiceName, `__keychain_test__${mockCryptoRandomBytesString}`);
57
63
  });
58
64
  it('should return false if keytar fails to set password', async () => {
59
- mockKeytar.setPassword.mockRejectedValue(new Error('write error'));
65
+ const error = new Error('write error');
66
+ mockKeytar.setPassword.mockRejectedValue(error);
60
67
  const isAvailable = await storage.checkKeychainAvailability();
61
68
  expect(isAvailable).toBe(false);
62
69
  });
@@ -182,13 +189,15 @@ describe('KeychainTokenStorage', () => {
182
189
  expect(result).toEqual(['server1', 'server2']);
183
190
  });
184
191
  it('should return an empty array on error', async () => {
185
- mockKeytar.findCredentials.mockRejectedValue(new Error('find error'));
192
+ const error = new Error('find error');
193
+ mockKeytar.findCredentials.mockRejectedValue(error);
186
194
  const result = await storage.listServers();
187
195
  expect(result).toEqual([]);
196
+ expect(coreEvents.emitFeedback).toHaveBeenCalledWith('error', 'Failed to list servers from keychain', error);
188
197
  });
189
198
  });
190
199
  describe('getAllCredentials', () => {
191
- it('should return a map of all valid credentials', async () => {
200
+ it('should return a map of all valid credentials and emit feedback for invalid ones', async () => {
192
201
  const creds2 = {
193
202
  ...validCredentials,
194
203
  serverName: 'server2',
@@ -224,6 +233,15 @@ describe('KeychainTokenStorage', () => {
224
233
  expect(result.has('expired-server')).toBe(false);
225
234
  expect(result.has('bad-server')).toBe(false);
226
235
  expect(result.has('invalid-server')).toBe(false);
236
+ expect(coreEvents.emitFeedback).toHaveBeenCalledWith('error', 'Failed to parse credentials for bad-server', expect.any(SyntaxError));
237
+ expect(coreEvents.emitFeedback).toHaveBeenCalledWith('error', 'Failed to parse credentials for invalid-server', expect.any(Error));
238
+ });
239
+ it('should emit feedback and return empty map if findCredentials fails', async () => {
240
+ const error = new Error('find all error');
241
+ mockKeytar.findCredentials.mockRejectedValue(error);
242
+ const result = await storage.getAllCredentials();
243
+ expect(result.size).toBe(0);
244
+ expect(coreEvents.emitFeedback).toHaveBeenCalledWith('error', 'Failed to get all credentials from keychain', error);
227
245
  });
228
246
  });
229
247
  describe('clearAll', () => {
@@ -249,6 +267,39 @@ describe('KeychainTokenStorage', () => {
249
267
  await expect(storage.clearAll()).rejects.toThrow('Failed to clear some credentials: delete failed');
250
268
  });
251
269
  });
270
+ describe('Secrets', () => {
271
+ it('should set and get a secret', async () => {
272
+ mockKeytar.setPassword.mockResolvedValue(undefined);
273
+ mockKeytar.getPassword.mockResolvedValue('secret-value');
274
+ await storage.setSecret('secret-key', 'secret-value');
275
+ const value = await storage.getSecret('secret-key');
276
+ expect(mockKeytar.setPassword).toHaveBeenCalledWith(mockServiceName, '__secret__secret-key', 'secret-value');
277
+ expect(mockKeytar.getPassword).toHaveBeenCalledWith(mockServiceName, '__secret__secret-key');
278
+ expect(value).toBe('secret-value');
279
+ });
280
+ it('should delete a secret', async () => {
281
+ mockKeytar.deletePassword.mockResolvedValue(true);
282
+ await storage.deleteSecret('secret-key');
283
+ expect(mockKeytar.deletePassword).toHaveBeenCalledWith(mockServiceName, '__secret__secret-key');
284
+ });
285
+ it('should list secrets', async () => {
286
+ mockKeytar.findCredentials.mockResolvedValue([
287
+ { account: '__secret__secret1', password: '' },
288
+ { account: '__secret__secret2', password: '' },
289
+ { account: 'server1', password: '' },
290
+ ]);
291
+ const secrets = await storage.listSecrets();
292
+ expect(secrets).toEqual(['secret1', 'secret2']);
293
+ });
294
+ it('should not list secrets in listServers', async () => {
295
+ mockKeytar.findCredentials.mockResolvedValue([
296
+ { account: '__secret__secret1', password: '' },
297
+ { account: 'server1', password: '' },
298
+ ]);
299
+ const servers = await storage.listServers();
300
+ expect(servers).toEqual(['server1']);
301
+ });
302
+ });
252
303
  });
253
304
  });
254
305
  //# sourceMappingURL=keychain-token-storage.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"keychain-token-storage.test.js","sourceRoot":"","sources":["../../../../src/mcp/token-storage/keychain-token-storage.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"keychain-token-storage.test.js","sourceRoot":"","sources":["../../../../src/mcp/token-storage/keychain-token-storage.test.ts"],"names":[],"mappings":"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"}