@gleanwork/mcp-server-utils
Version:
Shared utilities for MCP server packages
70 lines • 2.19 kB
JavaScript
import { stripUndefined } from '../util/object.js';
/**
* Type guard to check if a GleanConfig uses token authentication
*/
export function isGleanTokenConfig(config) {
return config.authType === 'token';
}
/**
* Type guard to check if a GleanConfig uses basic authentication
*/
export function isBasicConfig(config) {
return config.authType === 'unknown';
}
/**
* Validates required environment variables and returns client configuration.
*
* @returns A promise that resolves to GleanConfig
* @throws {Error} If required environment variables are missing
*/
export async function getConfig() {
return getLocalConfig();
}
function getLocalConfig() {
const instance = process.env.GLEAN_INSTANCE || process.env.GLEAN_SUBDOMAIN;
const baseUrl = process.env.GLEAN_URL;
const token = process.env.GLEAN_API_TOKEN;
const actAs = process.env.GLEAN_ACT_AS;
if (token !== undefined) {
return buildTokenConfig({
token,
instance,
baseUrl,
actAs,
});
}
const config = buildBasicConfig({
instance,
baseUrl,
});
return Object.assign(Object.assign({}, stripUndefined(config)), { baseUrl: config.baseUrl, authType: config.authType });
}
export function sanitizeConfig(config) {
const result = Object.assign({}, config);
if ('token' in result) {
delete result.token;
}
return result;
}
function buildGleanBaseUrl({ baseUrl, instance, }) {
if (!baseUrl) {
if (!instance) {
throw new Error('GLEAN_INSTANCE environment variable is required');
}
return `https://${instance}-be.glean.com/`;
}
return baseUrl;
}
function buildBasicConfig({ instance, baseUrl, }) {
return {
authType: 'unknown',
baseUrl: buildGleanBaseUrl({ instance, baseUrl }),
};
}
function buildTokenConfig({ token, actAs, baseUrl, instance, }) {
if (!token) {
throw new Error('GLEAN_API_TOKEN environment variable is required');
}
return Object.assign({ authType: 'token', baseUrl: buildGleanBaseUrl({ instance, baseUrl }), token }, (actAs ? { actAs } : {}));
}
//# sourceMappingURL=index.js.map