@dataflint/mcp-server 1.0.17 → 1.0.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/auth/auth0-service.d.ts.map +1 -1
- package/dist/auth/auth0-service.js +27 -13
- package/dist/auth/auth0-service.js.map +1 -1
- package/dist/auth/errors.d.ts +86 -0
- package/dist/auth/errors.d.ts.map +1 -0
- package/dist/auth/errors.js +144 -0
- package/dist/auth/errors.js.map +1 -0
- package/dist/auth/index.d.ts +1 -0
- package/dist/auth/index.d.ts.map +1 -1
- package/dist/auth/index.js +10 -1
- package/dist/auth/index.js.map +1 -1
- package/dist/dataflint-server-service.d.ts +12 -4
- package/dist/dataflint-server-service.d.ts.map +1 -1
- package/dist/dataflint-server-service.js +219 -63
- package/dist/dataflint-server-service.js.map +1 -1
- package/dist/errors.d.ts +55 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +185 -0
- package/dist/errors.js.map +1 -0
- package/dist/index.d.ts +3 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +21 -5
- package/dist/index.js.map +1 -1
- package/dist/request-context.d.ts +20 -0
- package/dist/request-context.d.ts.map +1 -1
- package/dist/request-context.js +31 -1
- package/dist/request-context.js.map +1 -1
- package/dist/server.d.ts +2 -2
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +16 -14
- package/dist/server.js.map +1 -1
- package/dist/standalone/config.d.ts +13 -7
- package/dist/standalone/config.d.ts.map +1 -1
- package/dist/standalone/config.js +361 -81
- package/dist/standalone/config.js.map +4 -4
- package/dist/standalone/server.d.ts.map +1 -1
- package/dist/standalone/server.js +45 -25
- package/dist/standalone/server.js.map +1 -1
- package/dist/standalone/stdio-transport.d.ts +2 -1
- package/dist/standalone/stdio-transport.d.ts.map +1 -1
- package/dist/standalone/stdio-transport.js +3 -4
- package/dist/standalone/stdio-transport.js.map +1 -1
- package/dist/test-helpers.d.ts +27 -0
- package/dist/test-helpers.d.ts.map +1 -0
- package/dist/test-helpers.js +101 -0
- package/dist/test-helpers.js.map +1 -0
- package/dist/types.d.ts +5 -13
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +5 -0
- package/dist/types.js.map +1 -1
- package/package.json +1 -1
- package/dist/auth.d.ts +0 -47
- package/dist/auth.d.ts.map +0 -1
- package/dist/auth.js +0 -302
- package/dist/auth.js.map +0 -1
package/dist/auth.js
DELETED
|
@@ -1,302 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
-
var ownKeys = function(o) {
|
|
20
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
-
var ar = [];
|
|
22
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
-
return ar;
|
|
24
|
-
};
|
|
25
|
-
return ownKeys(o);
|
|
26
|
-
};
|
|
27
|
-
return function (mod) {
|
|
28
|
-
if (mod && mod.__esModule) return mod;
|
|
29
|
-
var result = {};
|
|
30
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
-
__setModuleDefault(result, mod);
|
|
32
|
-
return result;
|
|
33
|
-
};
|
|
34
|
-
})();
|
|
35
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
-
exports.Auth0Service = void 0;
|
|
37
|
-
const http = __importStar(require("http"));
|
|
38
|
-
const openid_client_1 = require("openid-client");
|
|
39
|
-
const url_1 = require("url");
|
|
40
|
-
const logger_1 = require("./logger");
|
|
41
|
-
const AUTH_DISCOVERY_TIMEOUT_MS = 10_000; // 10 seconds
|
|
42
|
-
openid_client_1.custom.setHttpOptionsDefaults({
|
|
43
|
-
timeout: AUTH_DISCOVERY_TIMEOUT_MS,
|
|
44
|
-
});
|
|
45
|
-
class Auth0Service {
|
|
46
|
-
config;
|
|
47
|
-
redirectUri;
|
|
48
|
-
callbackPort;
|
|
49
|
-
client = null;
|
|
50
|
-
issuer = null;
|
|
51
|
-
initialized = false;
|
|
52
|
-
openUrlHandler;
|
|
53
|
-
constructor(openUrlHandler, configProvider, callbackPort = 11334) {
|
|
54
|
-
const logger = logger_1.Logger.getInstance();
|
|
55
|
-
this.openUrlHandler = openUrlHandler;
|
|
56
|
-
this.config = {
|
|
57
|
-
...configProvider(),
|
|
58
|
-
scope: configProvider().scope || "openid profile email",
|
|
59
|
-
};
|
|
60
|
-
this.callbackPort = callbackPort;
|
|
61
|
-
this.redirectUri = `http://localhost:${callbackPort}/callback`;
|
|
62
|
-
logger.info(`Auth0Service initialized for domain: ${this.config.domain}`);
|
|
63
|
-
}
|
|
64
|
-
/**
|
|
65
|
-
* Initialize the Auth0 client by discovering the issuer metadata
|
|
66
|
-
*/
|
|
67
|
-
async initialize() {
|
|
68
|
-
const logger = logger_1.Logger.getInstance();
|
|
69
|
-
if (this.initialized) {
|
|
70
|
-
logger.debug("Auth0 client already initialized");
|
|
71
|
-
return;
|
|
72
|
-
}
|
|
73
|
-
try {
|
|
74
|
-
const issuerUrl = this.config.domain.startsWith("http")
|
|
75
|
-
? this.config.domain
|
|
76
|
-
: `https://${this.config.domain}`;
|
|
77
|
-
logger.info(`Attempting to discover Auth0 issuer at: ${issuerUrl}`);
|
|
78
|
-
logger.debug(`Discovery URL will be: ${issuerUrl}`);
|
|
79
|
-
this.issuer = await openid_client_1.Issuer.discover(issuerUrl);
|
|
80
|
-
logger.info(`Auth0 issuer discovered successfully: ${this.issuer.issuer}`);
|
|
81
|
-
this.client = new this.issuer.Client({
|
|
82
|
-
client_id: this.config.clientId,
|
|
83
|
-
redirect_uris: [this.redirectUri],
|
|
84
|
-
response_types: ["code"],
|
|
85
|
-
token_endpoint_auth_method: "none", // Public client, no client secret required
|
|
86
|
-
});
|
|
87
|
-
this.initialized = true;
|
|
88
|
-
logger.info("Auth0 client initialized successfully");
|
|
89
|
-
}
|
|
90
|
-
catch (error) {
|
|
91
|
-
logger.error("Failed to initialize Auth0 client", error);
|
|
92
|
-
logger.error(`Auth0 domain: ${this.config.domain}`);
|
|
93
|
-
logger.error(`Client ID: ${this.config.clientId}`);
|
|
94
|
-
logger.error(`Constructed issuer URL: ${this.config.domain.startsWith("http") ? this.config.domain : `https://${this.config.domain}`}`);
|
|
95
|
-
// Check if it's a network/discovery error
|
|
96
|
-
if (error instanceof Error) {
|
|
97
|
-
if (error.message.includes("404") ||
|
|
98
|
-
error.message.includes("Not Found")) {
|
|
99
|
-
throw new Error(`Auth0 domain '${this.config.domain}' not found. Please verify your Auth0 domain configuration. The discovery endpoint ${this.config.domain} returned 404.`);
|
|
100
|
-
}
|
|
101
|
-
else if (error.message.includes("ENOTFOUND") ||
|
|
102
|
-
error.message.includes("getaddrinfo")) {
|
|
103
|
-
throw new Error(`Cannot connect to Auth0 domain '${this.config.domain}'. Please check your internet connection and verify the domain is correct.`);
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
throw new Error(`Auth0 initialization failed: ${error}`);
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
/**
|
|
110
|
-
* Start the authentication flow
|
|
111
|
-
*/
|
|
112
|
-
async authenticate() {
|
|
113
|
-
const logger = logger_1.Logger.getInstance();
|
|
114
|
-
if (!this.client) {
|
|
115
|
-
await this.initialize();
|
|
116
|
-
}
|
|
117
|
-
if (!this.client) {
|
|
118
|
-
throw new Error("Auth0 client not initialized");
|
|
119
|
-
}
|
|
120
|
-
// Generate PKCE code verifier/challenge for security
|
|
121
|
-
const codeVerifier = openid_client_1.generators.codeVerifier();
|
|
122
|
-
const codeChallenge = openid_client_1.generators.codeChallenge(codeVerifier);
|
|
123
|
-
// Create the authorization URL
|
|
124
|
-
const authUrl = this.client.authorizationUrl({
|
|
125
|
-
scope: this.config.scope,
|
|
126
|
-
code_challenge: codeChallenge,
|
|
127
|
-
code_challenge_method: "S256",
|
|
128
|
-
...(this.config.audience && { audience: this.config.audience }),
|
|
129
|
-
});
|
|
130
|
-
logger.info("Opening browser for authentication...");
|
|
131
|
-
try {
|
|
132
|
-
await this.openUrlHandler(authUrl);
|
|
133
|
-
}
|
|
134
|
-
catch (error) {
|
|
135
|
-
logger.error("Failed to open browser", error);
|
|
136
|
-
logger.info(`Please manually navigate to: ${authUrl}`);
|
|
137
|
-
}
|
|
138
|
-
// Wait for the callback and exchange the code for tokens
|
|
139
|
-
return new Promise((resolve, reject) => {
|
|
140
|
-
const server = http.createServer(async (req, res) => {
|
|
141
|
-
try {
|
|
142
|
-
if (!req.url?.startsWith("/callback")) {
|
|
143
|
-
res.writeHead(404, { "Content-Type": "text/plain" });
|
|
144
|
-
res.end("Not Found");
|
|
145
|
-
return;
|
|
146
|
-
}
|
|
147
|
-
const callbackUrl = new url_1.URL(`http://localhost:${this.callbackPort}${req.url}`);
|
|
148
|
-
const params = this.client.callbackParams(callbackUrl.toString());
|
|
149
|
-
// Exchange authorization code for tokens
|
|
150
|
-
const tokenSet = await this.client.callback(this.redirectUri, params, {
|
|
151
|
-
code_verifier: codeVerifier,
|
|
152
|
-
});
|
|
153
|
-
const authResult = this.processTokenSet(tokenSet);
|
|
154
|
-
// Send success response
|
|
155
|
-
res.writeHead(200, { "Content-Type": "text/html" });
|
|
156
|
-
res.end(`
|
|
157
|
-
<html>
|
|
158
|
-
<body style="font-family: Arial, sans-serif; text-align: center; padding: 50px;">
|
|
159
|
-
<h2 style="color: #4CAF50;">Authentication Successful!</h2>
|
|
160
|
-
<p>You can now close this tab and return to VS Code/Cursor.</p>
|
|
161
|
-
<script>
|
|
162
|
-
setTimeout(() => {
|
|
163
|
-
window.close();
|
|
164
|
-
}, 3000);
|
|
165
|
-
</script>
|
|
166
|
-
</body>
|
|
167
|
-
</html>
|
|
168
|
-
`);
|
|
169
|
-
server.close();
|
|
170
|
-
resolve(authResult);
|
|
171
|
-
}
|
|
172
|
-
catch (error) {
|
|
173
|
-
logger.error("Authentication callback error", error);
|
|
174
|
-
// Send error response
|
|
175
|
-
res.writeHead(400, { "Content-Type": "text/html" });
|
|
176
|
-
res.end(`
|
|
177
|
-
<html>
|
|
178
|
-
<body style="font-family: Arial, sans-serif; text-align: center; padding: 50px;">
|
|
179
|
-
<h2 style="color: #f44336;">❌ Authentication Failed</h2>
|
|
180
|
-
<p>Error: ${error}</p>
|
|
181
|
-
<p>Please try again.</p>
|
|
182
|
-
</body>
|
|
183
|
-
</html>
|
|
184
|
-
`);
|
|
185
|
-
server.close();
|
|
186
|
-
reject(error);
|
|
187
|
-
}
|
|
188
|
-
});
|
|
189
|
-
server.listen(this.callbackPort, () => {
|
|
190
|
-
logger.info(`Listening for Auth0 callback on http://localhost:${this.callbackPort}/callback`);
|
|
191
|
-
});
|
|
192
|
-
// Add timeout to prevent hanging
|
|
193
|
-
setTimeout(() => {
|
|
194
|
-
server.close();
|
|
195
|
-
reject(new Error("Authentication timeout - no response received within 5 minutes"));
|
|
196
|
-
}, 300000); // 5 minutes timeout
|
|
197
|
-
});
|
|
198
|
-
}
|
|
199
|
-
/**
|
|
200
|
-
* Get user information using the access token
|
|
201
|
-
*/
|
|
202
|
-
async getUserInfo(accessToken) {
|
|
203
|
-
const logger = logger_1.Logger.getInstance();
|
|
204
|
-
if (!this.client) {
|
|
205
|
-
throw new Error("Auth0 client not initialized");
|
|
206
|
-
}
|
|
207
|
-
try {
|
|
208
|
-
logger.info("Fetching user information...");
|
|
209
|
-
const userInfo = await this.client.userinfo(accessToken);
|
|
210
|
-
logger.info("User information retrieved successfully");
|
|
211
|
-
logger.debug(`User ID: ${userInfo.sub}`);
|
|
212
|
-
return userInfo;
|
|
213
|
-
}
|
|
214
|
-
catch (error) {
|
|
215
|
-
logger.error("Failed to get user info", error);
|
|
216
|
-
throw error;
|
|
217
|
-
}
|
|
218
|
-
}
|
|
219
|
-
/**
|
|
220
|
-
* Refresh the access token using refresh token
|
|
221
|
-
*/
|
|
222
|
-
async refreshToken(refreshToken) {
|
|
223
|
-
const logger = logger_1.Logger.getInstance();
|
|
224
|
-
if (!this.client) {
|
|
225
|
-
throw new Error("Auth0 client not initialized");
|
|
226
|
-
}
|
|
227
|
-
try {
|
|
228
|
-
logger.info("Refreshing access token...");
|
|
229
|
-
const tokenSet = await this.client.refresh(refreshToken);
|
|
230
|
-
const result = this.processTokenSet(tokenSet);
|
|
231
|
-
logger.info("Token refresh completed successfully");
|
|
232
|
-
return result;
|
|
233
|
-
}
|
|
234
|
-
catch (error) {
|
|
235
|
-
logger.error("Token refresh failed", error);
|
|
236
|
-
throw error;
|
|
237
|
-
}
|
|
238
|
-
}
|
|
239
|
-
/**
|
|
240
|
-
* Process token set and return structured result
|
|
241
|
-
*/
|
|
242
|
-
processTokenSet(tokenSet) {
|
|
243
|
-
const logger = logger_1.Logger.getInstance();
|
|
244
|
-
const result = {
|
|
245
|
-
accessToken: tokenSet.access_token,
|
|
246
|
-
idToken: tokenSet.id_token,
|
|
247
|
-
refreshToken: tokenSet.refresh_token,
|
|
248
|
-
};
|
|
249
|
-
if (tokenSet.expires_at) {
|
|
250
|
-
result.expiresAt = new Date(tokenSet.expires_at * 1000);
|
|
251
|
-
}
|
|
252
|
-
logger.info("Authentication tokens processed successfully");
|
|
253
|
-
logger.debug(`Access Token: ${result.accessToken?.substring(0, 20)}...`);
|
|
254
|
-
logger.debug(`ID Token: ${result.idToken ? "Present" : "Not provided"}`);
|
|
255
|
-
logger.debug(`Refresh Token: ${result.refreshToken ? "Present" : "Not provided"}`);
|
|
256
|
-
logger.debug(`Expires At: ${result.expiresAt}`);
|
|
257
|
-
return result;
|
|
258
|
-
}
|
|
259
|
-
/**
|
|
260
|
-
* Check if a token is expired
|
|
261
|
-
*/
|
|
262
|
-
isTokenExpired(authResult) {
|
|
263
|
-
const logger = logger_1.Logger.getInstance();
|
|
264
|
-
if (!authResult.expiresAt) {
|
|
265
|
-
logger.debug("No expiration time available, considering token valid");
|
|
266
|
-
return false; // If no expiration time, assume it's still valid
|
|
267
|
-
}
|
|
268
|
-
// Ensure expiresAt is a Date object (it might be a string if serialized)
|
|
269
|
-
const expiresAt = authResult.expiresAt instanceof Date
|
|
270
|
-
? authResult.expiresAt
|
|
271
|
-
: new Date(authResult.expiresAt);
|
|
272
|
-
const now = new Date();
|
|
273
|
-
const buffer = 5 * 60 * 1000; // 5 minutes buffer
|
|
274
|
-
const isExpired = expiresAt.getTime() - buffer < now.getTime();
|
|
275
|
-
if (isExpired) {
|
|
276
|
-
logger.warn("Access token is expired or will expire soon");
|
|
277
|
-
}
|
|
278
|
-
else {
|
|
279
|
-
logger.debug("Access token is still valid");
|
|
280
|
-
}
|
|
281
|
-
return isExpired;
|
|
282
|
-
}
|
|
283
|
-
/**
|
|
284
|
-
* Logout (revoke tokens if supported)
|
|
285
|
-
*/
|
|
286
|
-
async logout(accessToken) {
|
|
287
|
-
const logger = logger_1.Logger.getInstance();
|
|
288
|
-
if (!this.client) {
|
|
289
|
-
throw new Error("Auth0 client not initialized");
|
|
290
|
-
}
|
|
291
|
-
try {
|
|
292
|
-
await this.client.revoke(accessToken);
|
|
293
|
-
logger.info("Token revoked successfully");
|
|
294
|
-
}
|
|
295
|
-
catch (error) {
|
|
296
|
-
logger.error("Failed to revoke token", error);
|
|
297
|
-
// Don't throw error as logout should be graceful
|
|
298
|
-
}
|
|
299
|
-
}
|
|
300
|
-
}
|
|
301
|
-
exports.Auth0Service = Auth0Service;
|
|
302
|
-
//# sourceMappingURL=auth.js.map
|
package/dist/auth.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"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"}
|