@lindblad/complai-mcp 0.1.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.
- package/README.md +303 -0
- package/dist/api/complai-client.d.ts +46 -0
- package/dist/api/complai-client.d.ts.map +1 -0
- package/dist/api/complai-client.js +113 -0
- package/dist/api/complai-client.js.map +1 -0
- package/dist/auth/device-auth.d.ts +98 -0
- package/dist/auth/device-auth.d.ts.map +1 -0
- package/dist/auth/device-auth.js +274 -0
- package/dist/auth/device-auth.js.map +1 -0
- package/dist/auth/pkce-auth.d.ts +67 -0
- package/dist/auth/pkce-auth.d.ts.map +1 -0
- package/dist/auth/pkce-auth.js +311 -0
- package/dist/auth/pkce-auth.js.map +1 -0
- package/dist/auth/token-manager.d.ts +58 -0
- package/dist/auth/token-manager.d.ts.map +1 -0
- package/dist/auth/token-manager.js +131 -0
- package/dist/auth/token-manager.js.map +1 -0
- package/dist/config/config-loader.d.ts +21 -0
- package/dist/config/config-loader.d.ts.map +1 -0
- package/dist/config/config-loader.js +152 -0
- package/dist/config/config-loader.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +483 -0
- package/dist/index.js.map +1 -0
- package/dist/tools/compliance-brief.d.ts +8 -0
- package/dist/tools/compliance-brief.d.ts.map +1 -0
- package/dist/tools/compliance-brief.js +122 -0
- package/dist/tools/compliance-brief.js.map +1 -0
- package/dist/types.d.ts +169 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/package.json +45 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pkce-auth.js","sourceRoot":"","sources":["../../src/auth/pkce-auth.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { ComplaiConfig } from '../types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Authentication mode
|
|
4
|
+
*/
|
|
5
|
+
export type AuthMode = 'm2m' | 'user';
|
|
6
|
+
/**
|
|
7
|
+
* Unified token manager supporting both M2M and user (PKCE) authentication
|
|
8
|
+
*/
|
|
9
|
+
export declare class TokenManager {
|
|
10
|
+
private readonly config;
|
|
11
|
+
private cachedToken;
|
|
12
|
+
private readonly bufferSeconds;
|
|
13
|
+
private readonly authMode;
|
|
14
|
+
private readonly pkceManager?;
|
|
15
|
+
constructor(config: ComplaiConfig);
|
|
16
|
+
/**
|
|
17
|
+
* Get the current authentication mode
|
|
18
|
+
*/
|
|
19
|
+
getAuthMode(): AuthMode;
|
|
20
|
+
/**
|
|
21
|
+
* Check if user is authenticated (for user auth mode)
|
|
22
|
+
*/
|
|
23
|
+
isAuthenticated(): boolean;
|
|
24
|
+
/**
|
|
25
|
+
* Get a valid access token
|
|
26
|
+
*/
|
|
27
|
+
getToken(): Promise<string>;
|
|
28
|
+
/**
|
|
29
|
+
* Force refresh the token
|
|
30
|
+
*/
|
|
31
|
+
refreshToken(): Promise<string>;
|
|
32
|
+
/**
|
|
33
|
+
* Perform interactive login (PKCE flow)
|
|
34
|
+
*/
|
|
35
|
+
login(): Promise<void>;
|
|
36
|
+
/**
|
|
37
|
+
* Perform interactive login with a specific organization (PKCE flow)
|
|
38
|
+
* This gets an org-scoped token with org_id claim
|
|
39
|
+
*/
|
|
40
|
+
loginWithOrganization(organizationId: string): Promise<void>;
|
|
41
|
+
/**
|
|
42
|
+
* Clear stored credentials (logout)
|
|
43
|
+
*/
|
|
44
|
+
logout(): void;
|
|
45
|
+
/**
|
|
46
|
+
* Invalidate the cached token
|
|
47
|
+
*/
|
|
48
|
+
invalidate(): void;
|
|
49
|
+
/**
|
|
50
|
+
* Refresh token using M2M client credentials
|
|
51
|
+
*/
|
|
52
|
+
private refreshM2MToken;
|
|
53
|
+
/**
|
|
54
|
+
* Check if a cached token is still valid
|
|
55
|
+
*/
|
|
56
|
+
private isTokenValid;
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=token-manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"token-manager.d.ts","sourceRoot":"","sources":["../../src/auth/token-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAmC,MAAM,aAAa,CAAC;AAG7E;;GAEG;AACH,MAAM,MAAM,QAAQ,GAAG,KAAK,GAAG,MAAM,CAAC;AAEtC;;GAEG;AACH,qBAAa,YAAY;IAMX,OAAO,CAAC,QAAQ,CAAC,MAAM;IALnC,OAAO,CAAC,WAAW,CAA4B;IAC/C,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAM;IACpC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAW;IACpC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAkB;gBAElB,MAAM,EAAE,aAAa;IAelD;;OAEG;IACH,WAAW,IAAI,QAAQ;IAIvB;;OAEG;IACH,eAAe,IAAI,OAAO;IAO1B;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC,MAAM,CAAC;IAYjC;;OAEG;IACG,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC;IAKrC;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAO5B;;;OAGG;IACG,qBAAqB,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAOlE;;OAEG;IACH,MAAM,IAAI,IAAI;IAOd;;OAEG;IACH,UAAU,IAAI,IAAI;IAIlB;;OAEG;YACW,eAAe;IA6B7B;;OAEG;IACH,OAAO,CAAC,YAAY;CAGrB"}
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
import { PkceAuthManager } from './pkce-auth.js';
|
|
2
|
+
/**
|
|
3
|
+
* Unified token manager supporting both M2M and user (PKCE) authentication
|
|
4
|
+
*/
|
|
5
|
+
export class TokenManager {
|
|
6
|
+
config;
|
|
7
|
+
cachedToken = null;
|
|
8
|
+
bufferSeconds = 60;
|
|
9
|
+
authMode;
|
|
10
|
+
pkceManager;
|
|
11
|
+
constructor(config) {
|
|
12
|
+
this.config = config;
|
|
13
|
+
// Determine auth mode based on config
|
|
14
|
+
if (config.auth0.clientSecret) {
|
|
15
|
+
this.authMode = 'm2m';
|
|
16
|
+
}
|
|
17
|
+
else {
|
|
18
|
+
this.authMode = 'user';
|
|
19
|
+
this.pkceManager = new PkceAuthManager({
|
|
20
|
+
domain: config.auth0.domain,
|
|
21
|
+
clientId: config.auth0.clientId,
|
|
22
|
+
audience: config.auth0.audience,
|
|
23
|
+
organizationId: config.api.organizationId,
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Get the current authentication mode
|
|
29
|
+
*/
|
|
30
|
+
getAuthMode() {
|
|
31
|
+
return this.authMode;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Check if user is authenticated (for user auth mode)
|
|
35
|
+
*/
|
|
36
|
+
isAuthenticated() {
|
|
37
|
+
if (this.authMode === 'm2m') {
|
|
38
|
+
return true; // M2M is always "authenticated" if config is valid
|
|
39
|
+
}
|
|
40
|
+
return this.pkceManager?.isAuthenticated() ?? false;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Get a valid access token
|
|
44
|
+
*/
|
|
45
|
+
async getToken() {
|
|
46
|
+
if (this.authMode === 'm2m') {
|
|
47
|
+
// Check cached token
|
|
48
|
+
if (this.cachedToken && this.isTokenValid(this.cachedToken)) {
|
|
49
|
+
return this.cachedToken.token;
|
|
50
|
+
}
|
|
51
|
+
return this.refreshM2MToken();
|
|
52
|
+
}
|
|
53
|
+
else {
|
|
54
|
+
return this.pkceManager.getAccessToken();
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Force refresh the token
|
|
59
|
+
*/
|
|
60
|
+
async refreshToken() {
|
|
61
|
+
this.invalidate();
|
|
62
|
+
return this.getToken();
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Perform interactive login (PKCE flow)
|
|
66
|
+
*/
|
|
67
|
+
async login() {
|
|
68
|
+
if (this.authMode === 'm2m') {
|
|
69
|
+
throw new Error('Login not available in M2M mode');
|
|
70
|
+
}
|
|
71
|
+
await this.pkceManager.login();
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Perform interactive login with a specific organization (PKCE flow)
|
|
75
|
+
* This gets an org-scoped token with org_id claim
|
|
76
|
+
*/
|
|
77
|
+
async loginWithOrganization(organizationId) {
|
|
78
|
+
if (this.authMode === 'm2m') {
|
|
79
|
+
throw new Error('Login not available in M2M mode');
|
|
80
|
+
}
|
|
81
|
+
await this.pkceManager.loginWithOrganization(organizationId);
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Clear stored credentials (logout)
|
|
85
|
+
*/
|
|
86
|
+
logout() {
|
|
87
|
+
this.cachedToken = null;
|
|
88
|
+
if (this.authMode === 'user' && this.pkceManager) {
|
|
89
|
+
this.pkceManager.logout();
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Invalidate the cached token
|
|
94
|
+
*/
|
|
95
|
+
invalidate() {
|
|
96
|
+
this.cachedToken = null;
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Refresh token using M2M client credentials
|
|
100
|
+
*/
|
|
101
|
+
async refreshM2MToken() {
|
|
102
|
+
const { domain, clientId, clientSecret, audience } = this.config.auth0;
|
|
103
|
+
const response = await fetch(`https://${domain}/oauth/token`, {
|
|
104
|
+
method: 'POST',
|
|
105
|
+
headers: { 'Content-Type': 'application/json' },
|
|
106
|
+
body: JSON.stringify({
|
|
107
|
+
grant_type: 'client_credentials',
|
|
108
|
+
client_id: clientId,
|
|
109
|
+
client_secret: clientSecret,
|
|
110
|
+
audience: audience,
|
|
111
|
+
}),
|
|
112
|
+
});
|
|
113
|
+
if (!response.ok) {
|
|
114
|
+
const error = await response.text();
|
|
115
|
+
throw new Error(`Authentication failed: ${error}`);
|
|
116
|
+
}
|
|
117
|
+
const data = (await response.json());
|
|
118
|
+
this.cachedToken = {
|
|
119
|
+
token: data.access_token,
|
|
120
|
+
expiresAt: Date.now() + data.expires_in * 1000,
|
|
121
|
+
};
|
|
122
|
+
return data.access_token;
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Check if a cached token is still valid
|
|
126
|
+
*/
|
|
127
|
+
isTokenValid(token) {
|
|
128
|
+
return token.expiresAt > Date.now() + this.bufferSeconds * 1000;
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
//# sourceMappingURL=token-manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"token-manager.js","sourceRoot":"","sources":["../../src/auth/token-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { ComplaiConfig } from '../types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Load configuration with sensible defaults.
|
|
4
|
+
* Priority: Environment variables > Config file > Production defaults
|
|
5
|
+
*
|
|
6
|
+
* Two authentication modes are supported:
|
|
7
|
+
* 1. M2M (Machine-to-Machine): Requires COMPLAI_AUTH0_CLIENT_SECRET
|
|
8
|
+
* 2. User (Device Flow): No client secret needed, user authenticates via browser
|
|
9
|
+
*/
|
|
10
|
+
export declare function loadConfig(): ComplaiConfig;
|
|
11
|
+
/**
|
|
12
|
+
* Validate that all required config values are present
|
|
13
|
+
* Note: clientSecret is optional - if missing, uses device auth flow
|
|
14
|
+
* Note: organizationId is optional - if missing, user selects org via tool
|
|
15
|
+
*/
|
|
16
|
+
export declare function validateConfig(config: ComplaiConfig): void;
|
|
17
|
+
/**
|
|
18
|
+
* Get auth mode description for logging
|
|
19
|
+
*/
|
|
20
|
+
export declare function getAuthModeDescription(config: ComplaiConfig): string;
|
|
21
|
+
//# sourceMappingURL=config-loader.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-loader.d.ts","sourceRoot":"","sources":["../../src/config/config-loader.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAiB5C;;;;;;;GAOG;AACH,wBAAgB,UAAU,IAAI,aAAa,CAoB1C;AAyFD;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,aAAa,GAAG,IAAI,CAgB1D;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,CAKpE"}
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
import { readFileSync, existsSync } from 'node:fs';
|
|
2
|
+
/**
|
|
3
|
+
* Default configuration - public test environment
|
|
4
|
+
* Users can override via environment variables if needed
|
|
5
|
+
*/
|
|
6
|
+
const DEFAULTS = {
|
|
7
|
+
auth0: {
|
|
8
|
+
domain: 'login.test.complai.com',
|
|
9
|
+
clientId: '3UNdU67rLJnWTcfUksJETLAqpjO5k3xe',
|
|
10
|
+
audience: '3UNdU67rLJnWTcfUksJETLAqpjO5k3xe',
|
|
11
|
+
},
|
|
12
|
+
api: {
|
|
13
|
+
baseUrl: 'https://api.k8s.complai.com',
|
|
14
|
+
},
|
|
15
|
+
};
|
|
16
|
+
/**
|
|
17
|
+
* Load configuration with sensible defaults.
|
|
18
|
+
* Priority: Environment variables > Config file > Production defaults
|
|
19
|
+
*
|
|
20
|
+
* Two authentication modes are supported:
|
|
21
|
+
* 1. M2M (Machine-to-Machine): Requires COMPLAI_AUTH0_CLIENT_SECRET
|
|
22
|
+
* 2. User (Device Flow): No client secret needed, user authenticates via browser
|
|
23
|
+
*/
|
|
24
|
+
export function loadConfig() {
|
|
25
|
+
// Start with defaults (test environment)
|
|
26
|
+
let config = getDefaults();
|
|
27
|
+
// Override with config file if it exists
|
|
28
|
+
const configPath = process.env.COMPLAI_CONFIG_PATH || '~/.complai/mcp-config.json';
|
|
29
|
+
const resolvedPath = configPath.replace('~', process.env.HOME || '');
|
|
30
|
+
if (existsSync(resolvedPath)) {
|
|
31
|
+
try {
|
|
32
|
+
const fileConfig = loadFromFile(resolvedPath);
|
|
33
|
+
config = mergeConfig(config, fileConfig);
|
|
34
|
+
}
|
|
35
|
+
catch {
|
|
36
|
+
// Ignore file errors, use defaults
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
// Override with environment variables (highest priority)
|
|
40
|
+
config = mergeWithEnv(config);
|
|
41
|
+
return config;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Get default configuration
|
|
45
|
+
*/
|
|
46
|
+
function getDefaults() {
|
|
47
|
+
return {
|
|
48
|
+
auth0: {
|
|
49
|
+
domain: DEFAULTS.auth0.domain,
|
|
50
|
+
clientId: DEFAULTS.auth0.clientId,
|
|
51
|
+
audience: DEFAULTS.auth0.audience,
|
|
52
|
+
},
|
|
53
|
+
api: {
|
|
54
|
+
baseUrl: DEFAULTS.api.baseUrl,
|
|
55
|
+
},
|
|
56
|
+
cache: {
|
|
57
|
+
tokenTtlSeconds: 3600,
|
|
58
|
+
},
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Merge environment variables on top of existing config
|
|
63
|
+
*/
|
|
64
|
+
function mergeWithEnv(config) {
|
|
65
|
+
const domain = process.env.COMPLAI_AUTH0_DOMAIN;
|
|
66
|
+
const clientId = process.env.COMPLAI_AUTH0_CLIENT_ID;
|
|
67
|
+
const clientSecret = process.env.COMPLAI_AUTH0_CLIENT_SECRET;
|
|
68
|
+
const audience = process.env.COMPLAI_AUTH0_AUDIENCE;
|
|
69
|
+
const apiUrl = process.env.COMPLAI_API_URL;
|
|
70
|
+
const orgId = process.env.COMPLAI_ORGANIZATION_ID;
|
|
71
|
+
const tokenTtl = process.env.COMPLAI_TOKEN_TTL;
|
|
72
|
+
return {
|
|
73
|
+
auth0: {
|
|
74
|
+
domain: domain || config.auth0.domain,
|
|
75
|
+
clientId: clientId || config.auth0.clientId,
|
|
76
|
+
clientSecret: clientSecret || config.auth0.clientSecret,
|
|
77
|
+
audience: audience || config.auth0.audience,
|
|
78
|
+
},
|
|
79
|
+
api: {
|
|
80
|
+
baseUrl: apiUrl || config.api.baseUrl,
|
|
81
|
+
organizationId: orgId || config.api.organizationId,
|
|
82
|
+
},
|
|
83
|
+
cache: {
|
|
84
|
+
tokenTtlSeconds: tokenTtl ? parseInt(tokenTtl, 10) : (config.cache?.tokenTtlSeconds ?? 3600),
|
|
85
|
+
},
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Merge two configs, with second taking precedence
|
|
90
|
+
*/
|
|
91
|
+
function mergeConfig(base, override) {
|
|
92
|
+
return {
|
|
93
|
+
auth0: {
|
|
94
|
+
domain: override.auth0?.domain || base.auth0.domain,
|
|
95
|
+
clientId: override.auth0?.clientId || base.auth0.clientId,
|
|
96
|
+
clientSecret: override.auth0?.clientSecret || base.auth0.clientSecret,
|
|
97
|
+
audience: override.auth0?.audience || base.auth0.audience,
|
|
98
|
+
},
|
|
99
|
+
api: {
|
|
100
|
+
baseUrl: override.api?.baseUrl || base.api.baseUrl,
|
|
101
|
+
organizationId: override.api?.organizationId || base.api.organizationId,
|
|
102
|
+
},
|
|
103
|
+
cache: {
|
|
104
|
+
tokenTtlSeconds: override.cache?.tokenTtlSeconds ?? base.cache?.tokenTtlSeconds ?? 3600,
|
|
105
|
+
},
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Load configuration from a JSON file
|
|
110
|
+
*/
|
|
111
|
+
function loadFromFile(configPath) {
|
|
112
|
+
const resolvedPath = configPath.replace('~', process.env.HOME || '');
|
|
113
|
+
try {
|
|
114
|
+
const content = readFileSync(resolvedPath, 'utf-8');
|
|
115
|
+
return JSON.parse(content);
|
|
116
|
+
}
|
|
117
|
+
catch (error) {
|
|
118
|
+
throw new Error(`Cannot load config from ${resolvedPath}. ` +
|
|
119
|
+
`Either set environment variables (COMPLAI_AUTH0_DOMAIN, etc.) or create a config file. ` +
|
|
120
|
+
`Error: ${error instanceof Error ? error.message : String(error)}`);
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Validate that all required config values are present
|
|
125
|
+
* Note: clientSecret is optional - if missing, uses device auth flow
|
|
126
|
+
* Note: organizationId is optional - if missing, user selects org via tool
|
|
127
|
+
*/
|
|
128
|
+
export function validateConfig(config) {
|
|
129
|
+
const required = [
|
|
130
|
+
['auth0.domain', config.auth0?.domain],
|
|
131
|
+
['auth0.clientId', config.auth0?.clientId],
|
|
132
|
+
['auth0.audience', config.auth0?.audience],
|
|
133
|
+
['api.baseUrl', config.api?.baseUrl],
|
|
134
|
+
// organizationId is now optional for multi-org support
|
|
135
|
+
];
|
|
136
|
+
const missing = required
|
|
137
|
+
.filter(([, value]) => !value)
|
|
138
|
+
.map(([name]) => name);
|
|
139
|
+
if (missing.length > 0) {
|
|
140
|
+
throw new Error(`Missing required configuration: ${missing.join(', ')}`);
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* Get auth mode description for logging
|
|
145
|
+
*/
|
|
146
|
+
export function getAuthModeDescription(config) {
|
|
147
|
+
if (config.auth0.clientSecret) {
|
|
148
|
+
return 'M2M (Machine-to-Machine)';
|
|
149
|
+
}
|
|
150
|
+
return 'User (Device Flow)';
|
|
151
|
+
}
|
|
152
|
+
//# sourceMappingURL=config-loader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-loader.js","sourceRoot":"","sources":["../../src/config/config-loader.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
|