@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
|
@@ -36,13 +36,16 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
36
36
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
37
37
|
exports.startStandaloneServer = startStandaloneServer;
|
|
38
38
|
const commander_1 = require("commander");
|
|
39
|
-
const path = __importStar(require("path"));
|
|
40
|
-
const os = __importStar(require("os"));
|
|
39
|
+
const path = __importStar(require("node:path"));
|
|
40
|
+
const os = __importStar(require("node:os"));
|
|
41
41
|
const config_1 = require("./config");
|
|
42
42
|
const stdio_transport_1 = require("./stdio-transport");
|
|
43
43
|
const logger_1 = require("./logger");
|
|
44
44
|
const server_1 = require("../server");
|
|
45
45
|
const logger_2 = require("../logger");
|
|
46
|
+
const index_1 = require("../auth/index");
|
|
47
|
+
// Hardcoded version - avoids file read at module load time which breaks in bundled environments
|
|
48
|
+
const MCP_VERSION = "1.0.5";
|
|
46
49
|
/**
|
|
47
50
|
* Configure Logger for standalone mode
|
|
48
51
|
* In stdio mode: write to stderr + file (stdout reserved for protocol)
|
|
@@ -92,8 +95,6 @@ async function performAuthentication(configService) {
|
|
|
92
95
|
const logger = logger_2.Logger.getInstance();
|
|
93
96
|
logger.info("Starting authentication flow...");
|
|
94
97
|
logger.info("A browser window will open for you to authenticate with DataFlint.");
|
|
95
|
-
// Import Auth0Service dynamically to use its authentication flow
|
|
96
|
-
const { Auth0Service } = await import("../auth.js");
|
|
97
98
|
const openUrlHandler = async (url) => {
|
|
98
99
|
logger.info(`Opening browser: ${url}`);
|
|
99
100
|
const openModule = await import("open");
|
|
@@ -102,7 +103,7 @@ async function performAuthentication(configService) {
|
|
|
102
103
|
const configProvider = () => {
|
|
103
104
|
return configService.getAuthConfig();
|
|
104
105
|
};
|
|
105
|
-
const auth0Service = new Auth0Service(openUrlHandler, configProvider);
|
|
106
|
+
const auth0Service = new index_1.Auth0Service(openUrlHandler, configProvider, logger);
|
|
106
107
|
try {
|
|
107
108
|
// Perform authentication
|
|
108
109
|
const authResult = await auth0Service.authenticate();
|
|
@@ -123,13 +124,12 @@ async function performAuthentication(configService) {
|
|
|
123
124
|
/**
|
|
124
125
|
* Start the MCP server in the specified transport mode
|
|
125
126
|
*/
|
|
126
|
-
async function startServer(configService, transport, port) {
|
|
127
|
+
async function startServer(configService, transport, port, m2mStrategy) {
|
|
127
128
|
const logger = logger_2.Logger.getInstance();
|
|
128
129
|
if (transport === "stdio") {
|
|
129
130
|
logger.info("Starting MCP server in stdio mode...");
|
|
130
|
-
const stdioServer = new stdio_transport_1.StdioMcpServer(configService);
|
|
131
|
+
const stdioServer = new stdio_transport_1.StdioMcpServer(configService, m2mStrategy);
|
|
131
132
|
await stdioServer.start();
|
|
132
|
-
// Server will run indefinitely, handling stdin/stdout
|
|
133
133
|
logger.info("MCP server is running. Press Ctrl+C to stop.");
|
|
134
134
|
}
|
|
135
135
|
else {
|
|
@@ -144,11 +144,10 @@ async function startServer(configService, transport, port) {
|
|
|
144
144
|
const addHighlightsHandler = async (highlights, clearExisting) => {
|
|
145
145
|
logger.debug(`Highlight request received (standalone mode - no-op): ${highlights.length} highlights`);
|
|
146
146
|
};
|
|
147
|
-
const httpServer = new server_1.DataFlintCopilotMcpServer(openUrlHandler, configProvider, addHighlightsHandler, configService, port);
|
|
147
|
+
const httpServer = new server_1.DataFlintCopilotMcpServer(openUrlHandler, configProvider, addHighlightsHandler, configService, port, m2mStrategy);
|
|
148
148
|
await httpServer.start();
|
|
149
149
|
logger.info(`MCP server is running on http://localhost:${port}/mcp`);
|
|
150
150
|
logger.info("Press Ctrl+C to stop.");
|
|
151
|
-
// Keep process alive
|
|
152
151
|
await new Promise(() => { });
|
|
153
152
|
}
|
|
154
153
|
}
|
|
@@ -157,18 +156,22 @@ async function startServer(configService, transport, port) {
|
|
|
157
156
|
*/
|
|
158
157
|
async function startStandaloneServer() {
|
|
159
158
|
const program = new commander_1.Command();
|
|
159
|
+
// NOTE: CLI options intentionally have no defaults here.
|
|
160
|
+
// Defaults are applied in StandaloneConfigService.mergeWithDefaults()
|
|
161
|
+
// to ensure proper priority: CLI args > env vars > config file > defaults
|
|
160
162
|
program
|
|
161
163
|
.name("dataflint-mcp-server")
|
|
162
164
|
.description("DataFlint MCP Server")
|
|
163
|
-
.version(
|
|
164
|
-
.option("--server-url <url>", "DataFlint API server URL"
|
|
165
|
-
.option("--auth-domain <domain>", "Auth0 domain"
|
|
166
|
-
.option("--client-id <id>", "Auth0 client ID"
|
|
167
|
-
.option("--audience <audience>", "Auth0 API audience"
|
|
168
|
-
.option("--scope <scope>", "OAuth scope"
|
|
165
|
+
.version(MCP_VERSION)
|
|
166
|
+
.option("--server-url <url>", "DataFlint API server URL")
|
|
167
|
+
.option("--auth-domain <domain>", "Auth0 domain")
|
|
168
|
+
.option("--client-id <id>", "Auth0 client ID")
|
|
169
|
+
.option("--audience <audience>", "Auth0 API audience")
|
|
170
|
+
.option("--scope <scope>", "OAuth scope")
|
|
169
171
|
.option("--credentials <path>", "Path to credentials file (default: ~/.dataflint/credentials-{hash}.json)")
|
|
170
|
-
.
|
|
172
|
+
.addOption(new commander_1.Option("--admin-company-domain <domain>", "Admin company domain for multi-tenant routing").hideHelp())
|
|
171
173
|
.option("--customer-domain <domain>", "Customer domain for authentication (e.g., acme.corp)")
|
|
174
|
+
.option("--tenant-id <id>", "Tenant ID for M2M authentication (sent as X-DATAFLINT-TENANT-ID header)")
|
|
172
175
|
.option("-t, --transport <type>", "Transport type: stdio or http", "stdio")
|
|
173
176
|
.option("-p, --port <port>", "HTTP port (if using http transport)", "11223");
|
|
174
177
|
program.parse(process.argv);
|
|
@@ -195,20 +198,37 @@ async function startStandaloneServer() {
|
|
|
195
198
|
credentialsPath: options.credentials,
|
|
196
199
|
adminCompanyDomain: options.adminCompanyDomain,
|
|
197
200
|
customerDomain: options.customerDomain,
|
|
201
|
+
tenantId: options.tenantId,
|
|
198
202
|
});
|
|
199
203
|
logger.info(`Server URL: ${configService.getServerUrl()}`);
|
|
200
|
-
//
|
|
201
|
-
const
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
204
|
+
// Use AuthStrategyFactory to determine authentication strategy
|
|
205
|
+
const strategyFactory = new index_1.AuthStrategyFactory(configService, logger);
|
|
206
|
+
const { strategy, strategyType } = await strategyFactory.createStrategy();
|
|
207
|
+
let m2mStrategy;
|
|
208
|
+
if (strategy) {
|
|
209
|
+
// M2M strategy available (ServiceAccount or Auth0 M2M)
|
|
210
|
+
logger.info(`Authentication mode: ${strategyType}`);
|
|
211
|
+
await strategy.initialize();
|
|
212
|
+
m2mStrategy = strategy;
|
|
213
|
+
const tenantId = strategy.getTenantId();
|
|
214
|
+
if (tenantId) {
|
|
215
|
+
logger.info(`Tenant ID: ${tenantId}`);
|
|
216
|
+
}
|
|
205
217
|
}
|
|
206
218
|
else {
|
|
207
|
-
|
|
219
|
+
// Fall back to interactive OAuth2 flow
|
|
220
|
+
logger.info("Authentication mode: interactive OAuth2");
|
|
221
|
+
const authenticated = await isAuthenticated(configService);
|
|
222
|
+
if (!authenticated) {
|
|
223
|
+
logger.info("No valid authentication tokens found.");
|
|
224
|
+
await performAuthentication(configService);
|
|
225
|
+
}
|
|
226
|
+
else {
|
|
227
|
+
logger.info("Using existing authentication tokens.");
|
|
228
|
+
}
|
|
208
229
|
}
|
|
209
|
-
// Start the server
|
|
210
230
|
const port = parseInt(options.port || "11223", 10);
|
|
211
|
-
await startServer(configService, options.transport, port);
|
|
231
|
+
await startServer(configService, options.transport, port, m2mStrategy);
|
|
212
232
|
}
|
|
213
233
|
catch (error) {
|
|
214
234
|
logger.error("Failed to start MCP server", error);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/standalone/server.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/standalone/server.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { DataFlintServerService } from "../dataflint-server-service";
|
|
2
|
+
import { IAuthStrategy } from "../auth/index";
|
|
2
3
|
import { IConfigService } from "../types";
|
|
3
4
|
/**
|
|
4
5
|
* MCP Server using stdio transport for Claude Code CLI
|
|
@@ -11,7 +12,7 @@ export declare class StdioMcpServer {
|
|
|
11
12
|
private dataflintService;
|
|
12
13
|
private mcpState;
|
|
13
14
|
private configService;
|
|
14
|
-
constructor(configService: IConfigService);
|
|
15
|
+
constructor(configService: IConfigService, m2mStrategy?: IAuthStrategy);
|
|
15
16
|
private setupShutdownHandlers;
|
|
16
17
|
start(): Promise<void>;
|
|
17
18
|
stop(): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stdio-transport.d.ts","sourceRoot":"","sources":["../../src/standalone/stdio-transport.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"stdio-transport.d.ts","sourceRoot":"","sources":["../../src/standalone/stdio-transport.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAErE,OAAO,EAAgB,aAAa,EAAE,MAAM,eAAe,CAAC;AAC5D,OAAO,EACH,cAAc,EAKjB,MAAM,UAAU,CAAC;AAGlB;;;;GAIG;AACH,qBAAa,cAAc;IACvB,OAAO,CAAC,MAAM,CAAY;IAC1B,OAAO,CAAC,SAAS,CAAuB;IACxC,OAAO,CAAC,gBAAgB,CAAyB;IACjD,OAAO,CAAC,QAAQ,CAAoB;IACpC,OAAO,CAAC,aAAa,CAAiB;gBAE1B,aAAa,EAAE,cAAc,EAAE,WAAW,CAAC,EAAE,aAAa;IAqEtE,OAAO,CAAC,qBAAqB;IAavB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAqBtB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IA+BrB,eAAe,IAAI,OAAO,CAAC,OAAO,CAAC;IAIzC,mBAAmB,IAAI,sBAAsB;CAGhD"}
|
|
@@ -6,7 +6,7 @@ const stdio_js_1 = require("@modelcontextprotocol/sdk/server/stdio.js");
|
|
|
6
6
|
const state_1 = require("../state");
|
|
7
7
|
const dataflint_server_service_1 = require("../dataflint-server-service");
|
|
8
8
|
const tools_1 = require("../tools");
|
|
9
|
-
const
|
|
9
|
+
const index_1 = require("../auth/index");
|
|
10
10
|
const logger_1 = require("../logger");
|
|
11
11
|
/**
|
|
12
12
|
* MCP Server using stdio transport for Claude Code CLI
|
|
@@ -19,11 +19,10 @@ class StdioMcpServer {
|
|
|
19
19
|
dataflintService;
|
|
20
20
|
mcpState;
|
|
21
21
|
configService;
|
|
22
|
-
constructor(configService) {
|
|
22
|
+
constructor(configService, m2mStrategy) {
|
|
23
23
|
this.configService = configService;
|
|
24
24
|
const logger = logger_1.Logger.getInstance();
|
|
25
25
|
logger.info("Initializing stdio MCP server...");
|
|
26
|
-
// Create DataFlint service
|
|
27
26
|
const openUrlHandler = async (url) => {
|
|
28
27
|
const openModule = await import("open");
|
|
29
28
|
await openModule.default(url);
|
|
@@ -31,7 +30,7 @@ class StdioMcpServer {
|
|
|
31
30
|
const configProvider = () => {
|
|
32
31
|
return this.configService.getAuthConfig();
|
|
33
32
|
};
|
|
34
|
-
this.dataflintService = new dataflint_server_service_1.DataFlintServerService(() => new
|
|
33
|
+
this.dataflintService = new dataflint_server_service_1.DataFlintServerService(() => new index_1.Auth0Service(openUrlHandler, configProvider, logger), configService, undefined, m2mStrategy);
|
|
35
34
|
this.mcpState = new state_1.DataFlintMcpState();
|
|
36
35
|
// Create MCP server
|
|
37
36
|
this.server = new mcp_js_1.McpServer({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stdio-transport.js","sourceRoot":"","sources":["../../src/standalone/stdio-transport.ts"],"names":[],"mappings":";;;AAAA,oEAAoE;AACpE,wEAAiF;AACjF,oCAA6C;AAC7C,0EAAqE;AACrE,oCAA6C;AAC7C,
|
|
1
|
+
{"version":3,"file":"stdio-transport.js","sourceRoot":"","sources":["../../src/standalone/stdio-transport.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { AuthResult, IConfigService, IMcpLogger } from "./index";
|
|
2
|
+
/** Creates a fresh logger mock instance */
|
|
3
|
+
export declare function createLoggerMock(): IMcpLogger;
|
|
4
|
+
/** Creates a mock config service with sensible defaults */
|
|
5
|
+
export declare function createMockConfig(overrides?: Partial<IConfigService>): IConfigService;
|
|
6
|
+
/** Creates a valid mock auth result */
|
|
7
|
+
export declare function createMockAuthResult(overrides?: Partial<AuthResult>): AuthResult;
|
|
8
|
+
/** Creates an expired mock auth result */
|
|
9
|
+
export declare function createExpiredAuthResult(): AuthResult;
|
|
10
|
+
/** Creates a mock Auth0Service */
|
|
11
|
+
export declare function createMockAuthService(mockAuthResult?: AuthResult): {
|
|
12
|
+
initialize: import("vitest").Mock<(...args: any[]) => any>;
|
|
13
|
+
authenticate: import("vitest").Mock<(...args: any[]) => any>;
|
|
14
|
+
refreshToken: import("vitest").Mock<(...args: any[]) => any>;
|
|
15
|
+
isTokenExpired: import("vitest").Mock<(...args: any[]) => any>;
|
|
16
|
+
getUserInfo: import("vitest").Mock<(...args: any[]) => any>;
|
|
17
|
+
logout: import("vitest").Mock<(...args: any[]) => any>;
|
|
18
|
+
};
|
|
19
|
+
/** Sets up mock logger as global Logger instance */
|
|
20
|
+
export declare function setupMockLogger(): IMcpLogger;
|
|
21
|
+
/** Creates a mock fetch response */
|
|
22
|
+
export declare function createMockFetch(responseData: unknown, ok?: boolean): import("vitest").Mock<(...args: any[]) => any>;
|
|
23
|
+
/** Helper to setup started service with mock fetch */
|
|
24
|
+
export declare function setupStartedService(service: {
|
|
25
|
+
start: () => Promise<void>;
|
|
26
|
+
}, responseData?: unknown): Promise<import("vitest").Mock<(...args: any[]) => any>>;
|
|
27
|
+
//# sourceMappingURL=test-helpers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test-helpers.d.ts","sourceRoot":"","sources":["../src/test-helpers.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,UAAU,EAAW,MAAM,SAAS,CAAC;AAG/E,2CAA2C;AAC3C,wBAAgB,gBAAgB,IAAI,UAAU,CAO7C;AAED,2DAA2D;AAC3D,wBAAgB,gBAAgB,CAC5B,SAAS,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,GACpC,cAAc,CAsBhB;AAED,uCAAuC;AACvC,wBAAgB,oBAAoB,CAChC,SAAS,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,GAChC,UAAU,CAQZ;AAED,0CAA0C;AAC1C,wBAAgB,uBAAuB,IAAI,UAAU,CAOpD;AAED,kCAAkC;AAClC,wBAAgB,qBAAqB,CAAC,cAAc,CAAC,EAAE,UAAU;;;;;;;EAUhE;AAED,oDAAoD;AACpD,wBAAgB,eAAe,IAAI,UAAU,CAI5C;AAED,oCAAoC;AACpC,wBAAgB,eAAe,CAAC,YAAY,EAAE,OAAO,EAAE,EAAE,UAAO,kDAM/D;AAED,sDAAsD;AACtD,wBAAsB,mBAAmB,CACrC,OAAO,EAAE;IAAE,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CAAE,EACvC,YAAY,GAAE,OAAyB,2DAM1C"}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createLoggerMock = createLoggerMock;
|
|
4
|
+
exports.createMockConfig = createMockConfig;
|
|
5
|
+
exports.createMockAuthResult = createMockAuthResult;
|
|
6
|
+
exports.createExpiredAuthResult = createExpiredAuthResult;
|
|
7
|
+
exports.createMockAuthService = createMockAuthService;
|
|
8
|
+
exports.setupMockLogger = setupMockLogger;
|
|
9
|
+
exports.createMockFetch = createMockFetch;
|
|
10
|
+
exports.setupStartedService = setupStartedService;
|
|
11
|
+
/**
|
|
12
|
+
* Shared test helpers for dataflint-mcp package
|
|
13
|
+
*/
|
|
14
|
+
const vitest_1 = require("vitest");
|
|
15
|
+
const logger_1 = require("./logger");
|
|
16
|
+
/** Creates a fresh logger mock instance */
|
|
17
|
+
function createLoggerMock() {
|
|
18
|
+
return {
|
|
19
|
+
info: vitest_1.vi.fn(),
|
|
20
|
+
debug: vitest_1.vi.fn(),
|
|
21
|
+
warn: vitest_1.vi.fn(),
|
|
22
|
+
error: vitest_1.vi.fn(),
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
/** Creates a mock config service with sensible defaults */
|
|
26
|
+
function createMockConfig(overrides) {
|
|
27
|
+
return {
|
|
28
|
+
getServerUrl: vitest_1.vi.fn().mockReturnValue("http://localhost:8080"),
|
|
29
|
+
getEnvironment: vitest_1.vi.fn().mockReturnValue("local"),
|
|
30
|
+
getAdminCompanyDomain: vitest_1.vi.fn().mockReturnValue("test-domain"),
|
|
31
|
+
getCustomerDomain: vitest_1.vi.fn().mockReturnValue("customer-domain"),
|
|
32
|
+
setAuthSecret: vitest_1.vi.fn().mockResolvedValue(undefined),
|
|
33
|
+
deleteAuthSecret: vitest_1.vi.fn().mockResolvedValue(undefined),
|
|
34
|
+
getAuthSecret: vitest_1.vi.fn().mockResolvedValue(undefined),
|
|
35
|
+
getAuthConfig: vitest_1.vi.fn().mockReturnValue({
|
|
36
|
+
domain: "test.auth0.com",
|
|
37
|
+
clientId: "test-client-id",
|
|
38
|
+
audience: "test-audience",
|
|
39
|
+
scope: "openid profile email",
|
|
40
|
+
}),
|
|
41
|
+
getSendSourceCode: vitest_1.vi.fn().mockReturnValue(false),
|
|
42
|
+
getM2MMode: vitest_1.vi
|
|
43
|
+
.fn()
|
|
44
|
+
.mockReturnValue({ type: "none" }),
|
|
45
|
+
getTenantId: vitest_1.vi.fn().mockReturnValue(undefined),
|
|
46
|
+
...overrides,
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
/** Creates a valid mock auth result */
|
|
50
|
+
function createMockAuthResult(overrides) {
|
|
51
|
+
return {
|
|
52
|
+
accessToken: "mock-access-token",
|
|
53
|
+
idToken: "mock-id-token",
|
|
54
|
+
refreshToken: "mock-refresh-token",
|
|
55
|
+
expiresAt: new Date(Date.now() + 3600000),
|
|
56
|
+
...overrides,
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
/** Creates an expired mock auth result */
|
|
60
|
+
function createExpiredAuthResult() {
|
|
61
|
+
return {
|
|
62
|
+
accessToken: "expired-access-token",
|
|
63
|
+
idToken: "expired-id-token",
|
|
64
|
+
refreshToken: "expired-refresh-token",
|
|
65
|
+
expiresAt: new Date(Date.now() - 3600000),
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
/** Creates a mock Auth0Service */
|
|
69
|
+
function createMockAuthService(mockAuthResult) {
|
|
70
|
+
const result = mockAuthResult ?? createMockAuthResult();
|
|
71
|
+
return {
|
|
72
|
+
initialize: vitest_1.vi.fn().mockResolvedValue(undefined),
|
|
73
|
+
authenticate: vitest_1.vi.fn().mockResolvedValue(result),
|
|
74
|
+
refreshToken: vitest_1.vi.fn().mockResolvedValue(result),
|
|
75
|
+
isTokenExpired: vitest_1.vi.fn().mockReturnValue(false),
|
|
76
|
+
getUserInfo: vitest_1.vi.fn().mockResolvedValue({ sub: "user123" }),
|
|
77
|
+
logout: vitest_1.vi.fn().mockResolvedValue(undefined),
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
/** Sets up mock logger as global Logger instance */
|
|
81
|
+
function setupMockLogger() {
|
|
82
|
+
const mockLogger = createLoggerMock();
|
|
83
|
+
logger_1.Logger.setInstance(mockLogger);
|
|
84
|
+
return mockLogger;
|
|
85
|
+
}
|
|
86
|
+
/** Creates a mock fetch response */
|
|
87
|
+
function createMockFetch(responseData, ok = true) {
|
|
88
|
+
return vitest_1.vi.fn().mockResolvedValue({
|
|
89
|
+
ok,
|
|
90
|
+
status: ok ? 200 : 500,
|
|
91
|
+
json: vitest_1.vi.fn().mockResolvedValue(responseData),
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
/** Helper to setup started service with mock fetch */
|
|
95
|
+
async function setupStartedService(service, responseData = { prompts: [] }) {
|
|
96
|
+
const mockFetch = createMockFetch(responseData);
|
|
97
|
+
global.fetch = mockFetch;
|
|
98
|
+
await service.start();
|
|
99
|
+
return mockFetch;
|
|
100
|
+
}
|
|
101
|
+
//# sourceMappingURL=test-helpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test-helpers.js","sourceRoot":"","sources":["../src/test-helpers.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
export type ConfigProvider
|
|
1
|
+
import type { AuthConfig, M2MMode } from "./auth/index";
|
|
2
|
+
export type { AuthConfig, AuthResult, IAuthStrategy, AuthUserInfo, IAuthConfigProvider, IAuthLogger, OpenUrlHandler, ConfigProvider, M2MMode, } from "./auth/index";
|
|
3
|
+
export { AuthStrategyType, M2MType } from "./auth/index";
|
|
3
4
|
export type AddHighlightsHandler = (highlights: HighlightDTO[], clearExisting: boolean) => Promise<void>;
|
|
4
5
|
/**
|
|
5
6
|
* Function to obfuscate source code for privacy.
|
|
@@ -10,12 +11,6 @@ export type AddHighlightsHandler = (highlights: HighlightDTO[], clearExisting: b
|
|
|
10
11
|
* @returns Obfuscated code string, or null if obfuscation not available
|
|
11
12
|
*/
|
|
12
13
|
export type ObfuscateCodeHandler = (code: string, language: string) => Promise<string | null>;
|
|
13
|
-
export interface AuthConfig {
|
|
14
|
-
domain: string;
|
|
15
|
-
clientId: string;
|
|
16
|
-
scope: string;
|
|
17
|
-
audience: string;
|
|
18
|
-
}
|
|
19
14
|
export interface IConfigService {
|
|
20
15
|
getServerUrl(): string;
|
|
21
16
|
getEnvironment(): string;
|
|
@@ -25,12 +20,9 @@ export interface IConfigService {
|
|
|
25
20
|
setAuthSecret(value: string): Promise<void>;
|
|
26
21
|
getAuthSecret(): Promise<string | undefined>;
|
|
27
22
|
deleteAuthSecret(): Promise<void>;
|
|
28
|
-
/**
|
|
29
|
-
* Whether to share anonymized code snippets to help improve highlight accuracy.
|
|
30
|
-
* When enabled, code is automatically obfuscated (variables→v1, strings→"str_1", etc.)
|
|
31
|
-
* Default: false (only file:line references are sent)
|
|
32
|
-
*/
|
|
33
23
|
getSendSourceCode(): boolean;
|
|
24
|
+
getM2MMode(): M2MMode;
|
|
25
|
+
getTenantId(): string | undefined;
|
|
34
26
|
}
|
|
35
27
|
export interface IMcpLogger {
|
|
36
28
|
info(message: string): void;
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/types.js
CHANGED
|
@@ -1,3 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.M2MType = exports.AuthStrategyType = void 0;
|
|
4
|
+
// Re-export enums (includes both type and runtime value)
|
|
5
|
+
var index_1 = require("./auth/index");
|
|
6
|
+
Object.defineProperty(exports, "AuthStrategyType", { enumerable: true, get: function () { return index_1.AuthStrategyType; } });
|
|
7
|
+
Object.defineProperty(exports, "M2MType", { enumerable: true, get: function () { return index_1.M2MType; } });
|
|
3
8
|
//# sourceMappingURL=types.js.map
|
package/dist/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";;;AAgBA,yDAAyD;AACzD,sCAAyD;AAAhD,yGAAA,gBAAgB,OAAA;AAAE,gGAAA,OAAO,OAAA"}
|
package/package.json
CHANGED
package/dist/auth.d.ts
DELETED
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
import { OpenUrlHandler, ConfigProvider } from "./types";
|
|
2
|
-
export interface AuthResult {
|
|
3
|
-
accessToken: string;
|
|
4
|
-
idToken?: string;
|
|
5
|
-
refreshToken?: string;
|
|
6
|
-
expiresAt?: Date;
|
|
7
|
-
userInfo?: any;
|
|
8
|
-
}
|
|
9
|
-
export declare class Auth0Service {
|
|
10
|
-
private config;
|
|
11
|
-
private redirectUri;
|
|
12
|
-
private callbackPort;
|
|
13
|
-
private client;
|
|
14
|
-
private issuer;
|
|
15
|
-
private initialized;
|
|
16
|
-
private openUrlHandler;
|
|
17
|
-
constructor(openUrlHandler: OpenUrlHandler, configProvider: ConfigProvider, callbackPort?: number);
|
|
18
|
-
/**
|
|
19
|
-
* Initialize the Auth0 client by discovering the issuer metadata
|
|
20
|
-
*/
|
|
21
|
-
initialize(): Promise<void>;
|
|
22
|
-
/**
|
|
23
|
-
* Start the authentication flow
|
|
24
|
-
*/
|
|
25
|
-
authenticate(): Promise<AuthResult>;
|
|
26
|
-
/**
|
|
27
|
-
* Get user information using the access token
|
|
28
|
-
*/
|
|
29
|
-
getUserInfo(accessToken: string): Promise<any>;
|
|
30
|
-
/**
|
|
31
|
-
* Refresh the access token using refresh token
|
|
32
|
-
*/
|
|
33
|
-
refreshToken(refreshToken: string): Promise<AuthResult>;
|
|
34
|
-
/**
|
|
35
|
-
* Process token set and return structured result
|
|
36
|
-
*/
|
|
37
|
-
private processTokenSet;
|
|
38
|
-
/**
|
|
39
|
-
* Check if a token is expired
|
|
40
|
-
*/
|
|
41
|
-
isTokenExpired(authResult: AuthResult): boolean;
|
|
42
|
-
/**
|
|
43
|
-
* Logout (revoke tokens if supported)
|
|
44
|
-
*/
|
|
45
|
-
logout(accessToken: string): Promise<void>;
|
|
46
|
-
}
|
|
47
|
-
//# sourceMappingURL=auth.d.ts.map
|
package/dist/auth.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,cAAc,EAAc,cAAc,EAAE,MAAM,SAAS,CAAC;AASrE,MAAM,WAAW,UAAU;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,IAAI,CAAC;IACjB,QAAQ,CAAC,EAAE,GAAG,CAAC;CAClB;AAED,qBAAa,YAAY;IACrB,OAAO,CAAC,MAAM,CAAa;IAC3B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,cAAc,CAAiB;gBAGnC,cAAc,EAAE,cAAc,EAC9B,cAAc,EAAE,cAAc,EAC9B,YAAY,GAAE,MAAc;IAgBhC;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IA6DjC;;OAEG;IACG,YAAY,IAAI,OAAO,CAAC,UAAU,CAAC;IAoHzC;;OAEG;IACG,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAsBpD;;OAEG;IACG,YAAY,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAqB7D;;OAEG;IACH,OAAO,CAAC,eAAe;IA4BvB;;OAEG;IACH,cAAc,CAAC,UAAU,EAAE,UAAU,GAAG,OAAO;IA6B/C;;OAEG;IACG,MAAM,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAenD"}
|