@reaudit/mcp-server 1.0.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 (119) hide show
  1. package/LICENSE +33 -0
  2. package/README.md +399 -0
  3. package/dist/auth/oauth-client.d.ts +43 -0
  4. package/dist/auth/oauth-client.d.ts.map +1 -0
  5. package/dist/auth/oauth-client.js +340 -0
  6. package/dist/auth/oauth-client.js.map +1 -0
  7. package/dist/auth/token-store.d.ts +41 -0
  8. package/dist/auth/token-store.d.ts.map +1 -0
  9. package/dist/auth/token-store.js +176 -0
  10. package/dist/auth/token-store.js.map +1 -0
  11. package/dist/index.d.ts +11 -0
  12. package/dist/index.d.ts.map +1 -0
  13. package/dist/index.js +480 -0
  14. package/dist/index.js.map +1 -0
  15. package/dist/lib/api-client.d.ts +970 -0
  16. package/dist/lib/api-client.d.ts.map +1 -0
  17. package/dist/lib/api-client.js +441 -0
  18. package/dist/lib/api-client.js.map +1 -0
  19. package/dist/lib/confirmation.d.ts +92 -0
  20. package/dist/lib/confirmation.d.ts.map +1 -0
  21. package/dist/lib/confirmation.js +224 -0
  22. package/dist/lib/confirmation.js.map +1 -0
  23. package/dist/lib/error-handler.d.ts +57 -0
  24. package/dist/lib/error-handler.d.ts.map +1 -0
  25. package/dist/lib/error-handler.js +235 -0
  26. package/dist/lib/error-handler.js.map +1 -0
  27. package/dist/lib/offline-mode.d.ts +107 -0
  28. package/dist/lib/offline-mode.d.ts.map +1 -0
  29. package/dist/lib/offline-mode.js +356 -0
  30. package/dist/lib/offline-mode.js.map +1 -0
  31. package/dist/lib/progress-tracker.d.ts +87 -0
  32. package/dist/lib/progress-tracker.d.ts.map +1 -0
  33. package/dist/lib/progress-tracker.js +238 -0
  34. package/dist/lib/progress-tracker.js.map +1 -0
  35. package/dist/prompts/index.d.ts +24 -0
  36. package/dist/prompts/index.d.ts.map +1 -0
  37. package/dist/prompts/index.js +305 -0
  38. package/dist/prompts/index.js.map +1 -0
  39. package/dist/resources/index.d.ts +44 -0
  40. package/dist/resources/index.d.ts.map +1 -0
  41. package/dist/resources/index.js +125 -0
  42. package/dist/resources/index.js.map +1 -0
  43. package/dist/tools/account.d.ts +25 -0
  44. package/dist/tools/account.d.ts.map +1 -0
  45. package/dist/tools/account.js +69 -0
  46. package/dist/tools/account.js.map +1 -0
  47. package/dist/tools/action-grids.d.ts +414 -0
  48. package/dist/tools/action-grids.d.ts.map +1 -0
  49. package/dist/tools/action-grids.js +271 -0
  50. package/dist/tools/action-grids.js.map +1 -0
  51. package/dist/tools/analytics-query.d.ts +126 -0
  52. package/dist/tools/analytics-query.d.ts.map +1 -0
  53. package/dist/tools/analytics-query.js +106 -0
  54. package/dist/tools/analytics-query.js.map +1 -0
  55. package/dist/tools/analytics.d.ts +57 -0
  56. package/dist/tools/analytics.d.ts.map +1 -0
  57. package/dist/tools/analytics.js +122 -0
  58. package/dist/tools/analytics.js.map +1 -0
  59. package/dist/tools/audits.d.ts +123 -0
  60. package/dist/tools/audits.d.ts.map +1 -0
  61. package/dist/tools/audits.js +226 -0
  62. package/dist/tools/audits.js.map +1 -0
  63. package/dist/tools/calendar.d.ts +57 -0
  64. package/dist/tools/calendar.d.ts.map +1 -0
  65. package/dist/tools/calendar.js +109 -0
  66. package/dist/tools/calendar.js.map +1 -0
  67. package/dist/tools/content-generation.d.ts +211 -0
  68. package/dist/tools/content-generation.d.ts.map +1 -0
  69. package/dist/tools/content-generation.js +363 -0
  70. package/dist/tools/content-generation.js.map +1 -0
  71. package/dist/tools/content.d.ts +92 -0
  72. package/dist/tools/content.d.ts.map +1 -0
  73. package/dist/tools/content.js +130 -0
  74. package/dist/tools/content.js.map +1 -0
  75. package/dist/tools/indexing.d.ts +132 -0
  76. package/dist/tools/indexing.d.ts.map +1 -0
  77. package/dist/tools/indexing.js +190 -0
  78. package/dist/tools/indexing.js.map +1 -0
  79. package/dist/tools/optimization.d.ts +70 -0
  80. package/dist/tools/optimization.d.ts.map +1 -0
  81. package/dist/tools/optimization.js +106 -0
  82. package/dist/tools/optimization.js.map +1 -0
  83. package/dist/tools/projects.d.ts +67 -0
  84. package/dist/tools/projects.d.ts.map +1 -0
  85. package/dist/tools/projects.js +113 -0
  86. package/dist/tools/projects.js.map +1 -0
  87. package/dist/tools/prompts.d.ts +306 -0
  88. package/dist/tools/prompts.d.ts.map +1 -0
  89. package/dist/tools/prompts.js +378 -0
  90. package/dist/tools/prompts.js.map +1 -0
  91. package/dist/tools/publishing.d.ts +135 -0
  92. package/dist/tools/publishing.d.ts.map +1 -0
  93. package/dist/tools/publishing.js +209 -0
  94. package/dist/tools/publishing.js.map +1 -0
  95. package/dist/tools/reports.d.ts +252 -0
  96. package/dist/tools/reports.d.ts.map +1 -0
  97. package/dist/tools/reports.js +183 -0
  98. package/dist/tools/reports.js.map +1 -0
  99. package/dist/tools/social.d.ts +224 -0
  100. package/dist/tools/social.d.ts.map +1 -0
  101. package/dist/tools/social.js +291 -0
  102. package/dist/tools/social.js.map +1 -0
  103. package/dist/tools/sources.d.ts +221 -0
  104. package/dist/tools/sources.d.ts.map +1 -0
  105. package/dist/tools/sources.js +308 -0
  106. package/dist/tools/sources.js.map +1 -0
  107. package/dist/tools/strategy.d.ts +345 -0
  108. package/dist/tools/strategy.d.ts.map +1 -0
  109. package/dist/tools/strategy.js +392 -0
  110. package/dist/tools/strategy.js.map +1 -0
  111. package/dist/tools/usage.d.ts +101 -0
  112. package/dist/tools/usage.d.ts.map +1 -0
  113. package/dist/tools/usage.js +184 -0
  114. package/dist/tools/usage.js.map +1 -0
  115. package/dist/tools/visibility.d.ts +95 -0
  116. package/dist/tools/visibility.d.ts.map +1 -0
  117. package/dist/tools/visibility.js +163 -0
  118. package/dist/tools/visibility.js.map +1 -0
  119. package/package.json +54 -0
@@ -0,0 +1,340 @@
1
+ "use strict";
2
+ /**
3
+ * OAuth Client
4
+ *
5
+ * Handles the OAuth 2.0 authorization code flow with PKCE
6
+ * for authenticating with the Reaudit API.
7
+ */
8
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
9
+ if (k2 === undefined) k2 = k;
10
+ var desc = Object.getOwnPropertyDescriptor(m, k);
11
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
12
+ desc = { enumerable: true, get: function() { return m[k]; } };
13
+ }
14
+ Object.defineProperty(o, k2, desc);
15
+ }) : (function(o, m, k, k2) {
16
+ if (k2 === undefined) k2 = k;
17
+ o[k2] = m[k];
18
+ }));
19
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
20
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
21
+ }) : function(o, v) {
22
+ o["default"] = v;
23
+ });
24
+ var __importStar = (this && this.__importStar) || (function () {
25
+ var ownKeys = function(o) {
26
+ ownKeys = Object.getOwnPropertyNames || function (o) {
27
+ var ar = [];
28
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
29
+ return ar;
30
+ };
31
+ return ownKeys(o);
32
+ };
33
+ return function (mod) {
34
+ if (mod && mod.__esModule) return mod;
35
+ var result = {};
36
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
37
+ __setModuleDefault(result, mod);
38
+ return result;
39
+ };
40
+ })();
41
+ var __importDefault = (this && this.__importDefault) || function (mod) {
42
+ return (mod && mod.__esModule) ? mod : { "default": mod };
43
+ };
44
+ Object.defineProperty(exports, "__esModule", { value: true });
45
+ exports.OAuthClient = void 0;
46
+ const http = __importStar(require("http"));
47
+ const crypto = __importStar(require("crypto"));
48
+ const url = __importStar(require("url"));
49
+ const child_process = __importStar(require("child_process"));
50
+ const axios_1 = __importDefault(require("axios"));
51
+ const token_store_js_1 = require("./token-store.js");
52
+ /**
53
+ * Open URL in default browser (cross-platform)
54
+ */
55
+ async function openBrowser(url) {
56
+ const platform = process.platform;
57
+ let command;
58
+ let args;
59
+ if (platform === 'darwin') {
60
+ command = 'open';
61
+ args = [url];
62
+ }
63
+ else if (platform === 'win32') {
64
+ command = 'cmd';
65
+ args = ['/c', 'start', '', url];
66
+ }
67
+ else {
68
+ // Linux and others
69
+ command = 'xdg-open';
70
+ args = [url];
71
+ }
72
+ return new Promise((resolve, reject) => {
73
+ const proc = child_process.spawn(command, args, {
74
+ detached: true,
75
+ stdio: 'ignore',
76
+ });
77
+ proc.unref();
78
+ proc.on('error', reject);
79
+ // Resolve immediately since we detached
80
+ setTimeout(resolve, 100);
81
+ });
82
+ }
83
+ const CALLBACK_PORT = 3847;
84
+ const CLIENT_ID = process.env.REAUDIT_CLIENT_ID || 'reaudit-mcp-server';
85
+ /**
86
+ * Generate PKCE code verifier
87
+ */
88
+ function generateCodeVerifier() {
89
+ return crypto.randomBytes(32).toString('base64url');
90
+ }
91
+ /**
92
+ * Generate PKCE code challenge from verifier
93
+ */
94
+ function generateCodeChallenge(verifier) {
95
+ return crypto.createHash('sha256').update(verifier).digest('base64url');
96
+ }
97
+ /**
98
+ * OAuth Client class
99
+ */
100
+ class OAuthClient {
101
+ baseUrl;
102
+ tokenStore;
103
+ constructor(baseUrl) {
104
+ this.baseUrl = baseUrl;
105
+ this.tokenStore = new token_store_js_1.TokenStore(baseUrl);
106
+ }
107
+ /**
108
+ * Get a valid access token, refreshing if necessary
109
+ */
110
+ async getAccessToken() {
111
+ // Check for existing tokens
112
+ const tokens = this.tokenStore.loadTokens();
113
+ if (tokens) {
114
+ // Check if access token is still valid
115
+ if (!this.tokenStore.isAccessTokenExpired()) {
116
+ return tokens.accessToken;
117
+ }
118
+ // Try to refresh
119
+ try {
120
+ const newTokens = await this.refreshToken(tokens.refreshToken);
121
+ return newTokens.access_token;
122
+ }
123
+ catch (error) {
124
+ console.error('Token refresh failed, need to re-authenticate');
125
+ this.tokenStore.clearTokens();
126
+ }
127
+ }
128
+ // No valid tokens, need to authenticate
129
+ return this.authenticate();
130
+ }
131
+ /**
132
+ * Start the OAuth flow
133
+ */
134
+ async authenticate() {
135
+ return new Promise((resolve, reject) => {
136
+ const codeVerifier = generateCodeVerifier();
137
+ const codeChallenge = generateCodeChallenge(codeVerifier);
138
+ const state = crypto.randomBytes(16).toString('hex');
139
+ // Create local server to receive callback
140
+ const server = http.createServer(async (req, res) => {
141
+ const parsedUrl = url.parse(req.url || '', true);
142
+ if (parsedUrl.pathname === '/callback') {
143
+ const code = parsedUrl.query.code;
144
+ const returnedState = parsedUrl.query.state;
145
+ const error = parsedUrl.query.error;
146
+ if (error) {
147
+ res.writeHead(400, { 'Content-Type': 'text/html; charset=utf-8' });
148
+ res.end(this.getErrorPage('Authorization Denied', error === 'access_denied' ? 'You denied the authorization request.' : `Error: ${error}`));
149
+ server.close();
150
+ reject(new Error(`OAuth error: ${error}`));
151
+ return;
152
+ }
153
+ if (returnedState !== state) {
154
+ res.writeHead(400, { 'Content-Type': 'text/html; charset=utf-8' });
155
+ res.end(this.getErrorPage('Security Error', 'State mismatch detected. This could be a security issue. Please try again.'));
156
+ server.close();
157
+ reject(new Error('State mismatch'));
158
+ return;
159
+ }
160
+ try {
161
+ // Exchange code for tokens
162
+ const tokens = await this.exchangeCode(code, codeVerifier);
163
+ // Save tokens
164
+ this.tokenStore.saveTokens({
165
+ accessToken: tokens.access_token,
166
+ refreshToken: tokens.refresh_token,
167
+ expiresAt: Math.floor(Date.now() / 1000) + tokens.expires_in,
168
+ scope: tokens.scope,
169
+ });
170
+ res.writeHead(200, { 'Content-Type': 'text/html; charset=utf-8' });
171
+ res.end(`
172
+ <!DOCTYPE html>
173
+ <html lang="en">
174
+ <head>
175
+ <meta charset="UTF-8">
176
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
177
+ <title>Authorization Successful - Reaudit</title>
178
+ <link rel="icon" href="https://reaudit.io/favicon.ico">
179
+ </head>
180
+ <body style="font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; padding: 40px; text-align: center; background: linear-gradient(135deg, #f5f7fa 0%, #e4e8ec 100%); min-height: 100vh; margin: 0; display: flex; flex-direction: column; align-items: center; justify-content: center;">
181
+ <div style="background: white; padding: 48px; border-radius: 16px; box-shadow: 0 4px 24px rgba(0,0,0,0.1); max-width: 420px;">
182
+ <img src="https://reaudit.io/reaudit-logo-light.svg" alt="Reaudit" style="height: 40px; margin-bottom: 24px;">
183
+ <div style="width: 64px; height: 64px; background: #10b981; border-radius: 50%; display: flex; align-items: center; justify-content: center; margin: 0 auto 20px;">
184
+ <svg width="32" height="32" viewBox="0 0 24 24" fill="none" stroke="white" stroke-width="3" stroke-linecap="round" stroke-linejoin="round">
185
+ <polyline points="20 6 9 17 4 12"></polyline>
186
+ </svg>
187
+ </div>
188
+ <h1 style="color: #10b981; margin: 0 0 12px; font-size: 24px; font-weight: 600;">Authorization Successful</h1>
189
+ <p style="color: #64748b; margin: 0 0 24px; font-size: 15px;">You can close this window and return to your AI assistant.</p>
190
+ <p style="color: #94a3b8; font-size: 13px; margin: 0;">This window will close automatically in 3 seconds...</p>
191
+ </div>
192
+ <p style="color: #94a3b8; font-size: 12px; margin-top: 24px;">
193
+ <a href="https://reaudit.io/help/mcp" style="color: #231f20; text-decoration: none;">Need help?</a>
194
+ &nbsp;&bull;&nbsp;
195
+ <a href="https://reaudit.io" style="color: #231f20; text-decoration: none;">reaudit.io</a>
196
+ </p>
197
+ <script>setTimeout(() => window.close(), 3000);</script>
198
+ </body>
199
+ </html>
200
+ `);
201
+ server.close();
202
+ resolve(tokens.access_token);
203
+ }
204
+ catch (err) {
205
+ console.error('Token exchange error:', err);
206
+ res.writeHead(500, { 'Content-Type': 'text/html; charset=utf-8' });
207
+ res.end(this.getErrorPage('Token Exchange Failed', 'Failed to complete authorization. Please try again or contact support.'));
208
+ server.close();
209
+ reject(err);
210
+ }
211
+ }
212
+ });
213
+ server.listen(CALLBACK_PORT, () => {
214
+ // Build authorization URL
215
+ const authUrl = new URL(`${this.baseUrl}/api/oauth/authorize`);
216
+ authUrl.searchParams.set('client_id', CLIENT_ID);
217
+ authUrl.searchParams.set('redirect_uri', `http://localhost:${CALLBACK_PORT}/callback`);
218
+ authUrl.searchParams.set('response_type', 'code');
219
+ authUrl.searchParams.set('scope', 'full_access');
220
+ authUrl.searchParams.set('state', state);
221
+ authUrl.searchParams.set('code_challenge', codeChallenge);
222
+ authUrl.searchParams.set('code_challenge_method', 'S256');
223
+ console.error('\n🔐 Opening browser for authentication...');
224
+ console.error('If the browser doesn\'t open, visit this URL:');
225
+ console.error(authUrl.toString());
226
+ console.error('');
227
+ // Open browser
228
+ openBrowser(authUrl.toString()).catch(() => {
229
+ console.error('Could not open browser automatically.');
230
+ });
231
+ });
232
+ // Timeout after 5 minutes
233
+ setTimeout(() => {
234
+ server.close();
235
+ reject(new Error('Authentication timeout'));
236
+ }, 5 * 60 * 1000);
237
+ });
238
+ }
239
+ /**
240
+ * Exchange authorization code for tokens
241
+ */
242
+ async exchangeCode(code, codeVerifier) {
243
+ const response = await axios_1.default.post(`${this.baseUrl}/api/oauth/token`, {
244
+ grant_type: 'authorization_code',
245
+ client_id: CLIENT_ID,
246
+ code,
247
+ redirect_uri: `http://localhost:${CALLBACK_PORT}/callback`,
248
+ code_verifier: codeVerifier,
249
+ }, {
250
+ headers: {
251
+ 'Content-Type': 'application/json',
252
+ },
253
+ });
254
+ return response.data;
255
+ }
256
+ /**
257
+ * Refresh access token
258
+ */
259
+ async refreshToken(refreshToken) {
260
+ const response = await axios_1.default.post(`${this.baseUrl}/api/oauth/token`, {
261
+ grant_type: 'refresh_token',
262
+ client_id: CLIENT_ID,
263
+ refresh_token: refreshToken,
264
+ }, {
265
+ headers: {
266
+ 'Content-Type': 'application/json',
267
+ },
268
+ });
269
+ // Save new tokens
270
+ this.tokenStore.saveTokens({
271
+ accessToken: response.data.access_token,
272
+ refreshToken: response.data.refresh_token,
273
+ expiresAt: Math.floor(Date.now() / 1000) + response.data.expires_in,
274
+ scope: response.data.scope,
275
+ });
276
+ return response.data;
277
+ }
278
+ /**
279
+ * Revoke tokens and clear local storage
280
+ */
281
+ async logout() {
282
+ const tokens = this.tokenStore.loadTokens();
283
+ if (tokens) {
284
+ try {
285
+ await axios_1.default.post(`${this.baseUrl}/api/oauth/revoke`, {
286
+ token: tokens.refreshToken,
287
+ token_type_hint: 'refresh_token',
288
+ });
289
+ }
290
+ catch (error) {
291
+ // Ignore errors during revocation
292
+ }
293
+ }
294
+ this.tokenStore.clearTokens();
295
+ }
296
+ /**
297
+ * Check if user is authenticated
298
+ */
299
+ isAuthenticated() {
300
+ const tokens = this.tokenStore.loadTokens();
301
+ return tokens !== null;
302
+ }
303
+ /**
304
+ * Generate branded error page HTML
305
+ */
306
+ getErrorPage(title, message) {
307
+ return `
308
+ <!DOCTYPE html>
309
+ <html lang="en">
310
+ <head>
311
+ <meta charset="UTF-8">
312
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
313
+ <title>${title} - Reaudit</title>
314
+ <link rel="icon" href="https://reaudit.io/favicon.ico">
315
+ </head>
316
+ <body style="font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; padding: 40px; text-align: center; background: linear-gradient(135deg, #f5f7fa 0%, #e4e8ec 100%); min-height: 100vh; margin: 0; display: flex; flex-direction: column; align-items: center; justify-content: center;">
317
+ <div style="background: white; padding: 48px; border-radius: 16px; box-shadow: 0 4px 24px rgba(0,0,0,0.1); max-width: 420px;">
318
+ <img src="https://reaudit.io/reaudit-logo-light.svg" alt="Reaudit" style="height: 40px; margin-bottom: 24px;">
319
+ <div style="width: 64px; height: 64px; background: #ef4444; border-radius: 50%; display: flex; align-items: center; justify-content: center; margin: 0 auto 20px;">
320
+ <svg width="32" height="32" viewBox="0 0 24 24" fill="none" stroke="white" stroke-width="3" stroke-linecap="round" stroke-linejoin="round">
321
+ <line x1="18" y1="6" x2="6" y2="18"></line>
322
+ <line x1="6" y1="6" x2="18" y2="18"></line>
323
+ </svg>
324
+ </div>
325
+ <h1 style="color: #ef4444; margin: 0 0 12px; font-size: 24px; font-weight: 600;">${title}</h1>
326
+ <p style="color: #64748b; margin: 0 0 24px; font-size: 15px;">${message}</p>
327
+ <button onclick="window.close()" style="background: #231f20; color: white; border: none; padding: 12px 24px; border-radius: 8px; font-size: 14px; font-weight: 500; cursor: pointer;">Close Window</button>
328
+ </div>
329
+ <p style="color: #94a3b8; font-size: 12px; margin-top: 24px;">
330
+ <a href="https://reaudit.io/help/mcp" style="color: #231f20; text-decoration: none;">Need help?</a>
331
+ &nbsp;&bull;&nbsp;
332
+ <a href="https://reaudit.io" style="color: #231f20; text-decoration: none;">reaudit.io</a>
333
+ </p>
334
+ </body>
335
+ </html>
336
+ `;
337
+ }
338
+ }
339
+ exports.OAuthClient = OAuthClient;
340
+ //# sourceMappingURL=oauth-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"oauth-client.js","sourceRoot":"","sources":["../../src/auth/oauth-client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,41 @@
1
+ /**
2
+ * Token Store
3
+ *
4
+ * Securely stores OAuth tokens on the user's local machine.
5
+ * Tokens are stored in ~/.reaudit/credentials.json
6
+ */
7
+ interface StoredTokens {
8
+ accessToken: string;
9
+ refreshToken: string;
10
+ expiresAt: number;
11
+ scope: string;
12
+ }
13
+ /**
14
+ * Token Store class
15
+ */
16
+ export declare class TokenStore {
17
+ private baseUrl;
18
+ constructor(baseUrl: string);
19
+ /**
20
+ * Save tokens to disk
21
+ */
22
+ saveTokens(tokens: StoredTokens): void;
23
+ /**
24
+ * Load tokens from disk
25
+ */
26
+ loadTokens(): StoredTokens | null;
27
+ /**
28
+ * Clear stored tokens
29
+ */
30
+ clearTokens(): void;
31
+ /**
32
+ * Check if access token is expired (with 5 minute buffer)
33
+ */
34
+ isAccessTokenExpired(): boolean;
35
+ /**
36
+ * Get the credentials file path (for display to user)
37
+ */
38
+ static getCredentialsPath(): string;
39
+ }
40
+ export {};
41
+ //# sourceMappingURL=token-store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"token-store.d.ts","sourceRoot":"","sources":["../../src/auth/token-store.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAOH,UAAU,YAAY;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;CACf;AAuDD;;GAEG;AACH,qBAAa,UAAU;IACrB,OAAO,CAAC,OAAO,CAAS;gBAEZ,OAAO,EAAE,MAAM;IAI3B;;OAEG;IACH,UAAU,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI;IAmBtC;;OAEG;IACH,UAAU,IAAI,YAAY,GAAG,IAAI;IA8BjC;;OAEG;IACH,WAAW,IAAI,IAAI;IAUnB;;OAEG;IACH,oBAAoB,IAAI,OAAO;IAQ/B;;OAEG;IACH,MAAM,CAAC,kBAAkB,IAAI,MAAM;CAGpC"}
@@ -0,0 +1,176 @@
1
+ "use strict";
2
+ /**
3
+ * Token Store
4
+ *
5
+ * Securely stores OAuth tokens on the user's local machine.
6
+ * Tokens are stored in ~/.reaudit/credentials.json
7
+ */
8
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
9
+ if (k2 === undefined) k2 = k;
10
+ var desc = Object.getOwnPropertyDescriptor(m, k);
11
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
12
+ desc = { enumerable: true, get: function() { return m[k]; } };
13
+ }
14
+ Object.defineProperty(o, k2, desc);
15
+ }) : (function(o, m, k, k2) {
16
+ if (k2 === undefined) k2 = k;
17
+ o[k2] = m[k];
18
+ }));
19
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
20
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
21
+ }) : function(o, v) {
22
+ o["default"] = v;
23
+ });
24
+ var __importStar = (this && this.__importStar) || (function () {
25
+ var ownKeys = function(o) {
26
+ ownKeys = Object.getOwnPropertyNames || function (o) {
27
+ var ar = [];
28
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
29
+ return ar;
30
+ };
31
+ return ownKeys(o);
32
+ };
33
+ return function (mod) {
34
+ if (mod && mod.__esModule) return mod;
35
+ var result = {};
36
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
37
+ __setModuleDefault(result, mod);
38
+ return result;
39
+ };
40
+ })();
41
+ Object.defineProperty(exports, "__esModule", { value: true });
42
+ exports.TokenStore = void 0;
43
+ const fs = __importStar(require("fs"));
44
+ const path = __importStar(require("path"));
45
+ const os = __importStar(require("os"));
46
+ const crypto = __importStar(require("crypto"));
47
+ const CREDENTIALS_DIR = path.join(os.homedir(), '.reaudit');
48
+ const CREDENTIALS_FILE = path.join(CREDENTIALS_DIR, 'credentials.json');
49
+ const FILE_VERSION = 1;
50
+ /**
51
+ * Ensure the credentials directory exists
52
+ */
53
+ function ensureCredentialsDir() {
54
+ if (!fs.existsSync(CREDENTIALS_DIR)) {
55
+ fs.mkdirSync(CREDENTIALS_DIR, { mode: 0o700 });
56
+ }
57
+ }
58
+ /**
59
+ * Get a simple encryption key based on machine ID
60
+ * This provides basic obfuscation, not strong encryption
61
+ */
62
+ function getEncryptionKey() {
63
+ const machineId = os.hostname() + os.userInfo().username;
64
+ return crypto.createHash('sha256').update(machineId).digest();
65
+ }
66
+ /**
67
+ * Simple encrypt for local storage
68
+ */
69
+ function encrypt(text) {
70
+ const key = getEncryptionKey();
71
+ const iv = crypto.randomBytes(16);
72
+ const cipher = crypto.createCipheriv('aes-256-cbc', key, iv);
73
+ let encrypted = cipher.update(text, 'utf8', 'hex');
74
+ encrypted += cipher.final('hex');
75
+ return iv.toString('hex') + ':' + encrypted;
76
+ }
77
+ /**
78
+ * Simple decrypt for local storage
79
+ */
80
+ function decrypt(text) {
81
+ const key = getEncryptionKey();
82
+ const [ivHex, encrypted] = text.split(':');
83
+ const iv = Buffer.from(ivHex, 'hex');
84
+ const decipher = crypto.createDecipheriv('aes-256-cbc', key, iv);
85
+ let decrypted = decipher.update(encrypted, 'hex', 'utf8');
86
+ decrypted += decipher.final('utf8');
87
+ return decrypted;
88
+ }
89
+ /**
90
+ * Token Store class
91
+ */
92
+ class TokenStore {
93
+ baseUrl;
94
+ constructor(baseUrl) {
95
+ this.baseUrl = baseUrl;
96
+ }
97
+ /**
98
+ * Save tokens to disk
99
+ */
100
+ saveTokens(tokens) {
101
+ ensureCredentialsDir();
102
+ const data = {
103
+ version: FILE_VERSION,
104
+ tokens: {
105
+ accessToken: encrypt(tokens.accessToken),
106
+ refreshToken: encrypt(tokens.refreshToken),
107
+ expiresAt: tokens.expiresAt,
108
+ scope: tokens.scope,
109
+ },
110
+ baseUrl: this.baseUrl,
111
+ };
112
+ fs.writeFileSync(CREDENTIALS_FILE, JSON.stringify(data, null, 2), {
113
+ mode: 0o600,
114
+ });
115
+ }
116
+ /**
117
+ * Load tokens from disk
118
+ */
119
+ loadTokens() {
120
+ try {
121
+ if (!fs.existsSync(CREDENTIALS_FILE)) {
122
+ return null;
123
+ }
124
+ const content = fs.readFileSync(CREDENTIALS_FILE, 'utf8');
125
+ const data = JSON.parse(content);
126
+ // Check version and base URL
127
+ if (data.version !== FILE_VERSION || data.baseUrl !== this.baseUrl) {
128
+ return null;
129
+ }
130
+ if (!data.tokens) {
131
+ return null;
132
+ }
133
+ return {
134
+ accessToken: decrypt(data.tokens.accessToken),
135
+ refreshToken: decrypt(data.tokens.refreshToken),
136
+ expiresAt: data.tokens.expiresAt,
137
+ scope: data.tokens.scope,
138
+ };
139
+ }
140
+ catch (error) {
141
+ console.error('Error loading tokens:', error);
142
+ return null;
143
+ }
144
+ }
145
+ /**
146
+ * Clear stored tokens
147
+ */
148
+ clearTokens() {
149
+ try {
150
+ if (fs.existsSync(CREDENTIALS_FILE)) {
151
+ fs.unlinkSync(CREDENTIALS_FILE);
152
+ }
153
+ }
154
+ catch (error) {
155
+ console.error('Error clearing tokens:', error);
156
+ }
157
+ }
158
+ /**
159
+ * Check if access token is expired (with 5 minute buffer)
160
+ */
161
+ isAccessTokenExpired() {
162
+ const tokens = this.loadTokens();
163
+ if (!tokens)
164
+ return true;
165
+ const bufferMs = 5 * 60 * 1000; // 5 minutes
166
+ return Date.now() >= (tokens.expiresAt * 1000) - bufferMs;
167
+ }
168
+ /**
169
+ * Get the credentials file path (for display to user)
170
+ */
171
+ static getCredentialsPath() {
172
+ return CREDENTIALS_FILE;
173
+ }
174
+ }
175
+ exports.TokenStore = TokenStore;
176
+ //# sourceMappingURL=token-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"token-store.js","sourceRoot":"","sources":["../../src/auth/token-store.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Reaudit MCP Server
4
+ *
5
+ * Model Context Protocol server for accessing Reaudit AI Visibility Platform
6
+ * from AI assistants like Claude Desktop and Cursor.
7
+ *
8
+ * @see https://reaudit.io/docs/mcp
9
+ */
10
+ export {};
11
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA;;;;;;;GAOG"}