UNPKG

@kya-os/mcp-i

Version:

The TypeScript MCP framework with identity features built-in

123 lines (122 loc) 4.89 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.injectHttpVariables = injectHttpVariables; exports.injectCorsVariables = injectCorsVariables; exports.injectOAuthVariables = injectOAuthVariables; exports.injectPathsVariables = injectPathsVariables; exports.injectStdioVariables = injectStdioVariables; exports.injectIdentityVariables = injectIdentityVariables; exports.injectRuntimeConfigPath = injectRuntimeConfigPath; const utils_1 = require("./utils"); function injectHttpVariables(httpConfig, mode) { const resolvedConfig = (0, utils_1.getResolvedHttpConfig)(httpConfig); if (!resolvedConfig) return {}; // Double-stringify for webpack DefinePlugin - it replaces the variable with the raw value, // so we need to stringify twice to inject an actual string literal return { HTTP_CONFIG: JSON.stringify(JSON.stringify({ port: resolvedConfig.port, host: resolvedConfig.host, bodySizeLimit: resolvedConfig.bodySizeLimit, endpoint: resolvedConfig.endpoint, stateless: true, debug: mode === "development", })), }; } function injectCorsVariables(httpConfig) { const corsConfig = (0, utils_1.getResolvedCorsConfig)(httpConfig); // Double-stringify for webpack DefinePlugin return { HTTP_CORS_CONFIG: JSON.stringify(JSON.stringify({ origin: corsConfig.origin ?? "", methods: corsConfig.methods ?? "", allowedHeaders: corsConfig.allowedHeaders ?? "", exposedHeaders: corsConfig.exposedHeaders ?? "", credentials: corsConfig.credentials ?? false, maxAge: corsConfig.maxAge ?? 0, })), }; } function injectOAuthVariables(userConfig) { const oauthConfig = (0, utils_1.getResolvedOAuthConfig)(userConfig); // Double-stringify for webpack DefinePlugin return { OAUTH_CONFIG: JSON.stringify(JSON.stringify(oauthConfig)), }; } function injectPathsVariables(userConfig) { const pathsConfig = (0, utils_1.getResolvedPathsConfig)(userConfig); // Double-stringify for webpack DefinePlugin return { TOOLS_PATH: JSON.stringify(JSON.stringify(pathsConfig.tools)), }; } function injectStdioVariables(stdioConfig) { if (!stdioConfig) return {}; const debug = typeof stdioConfig === "object" ? stdioConfig.debug : false; // Double-stringify for webpack DefinePlugin return { STDIO_CONFIG: JSON.stringify(JSON.stringify({ debug, })), }; } function injectIdentityVariables(identityConfig, mode, projectRoot) { if (!identityConfig || !identityConfig.enabled) { // Double-stringify for webpack DefinePlugin return { IDENTITY_CONFIG: JSON.stringify(JSON.stringify({ enabled: false, })), }; } // Resolve devIdentityPath to absolute path at compile time // This ensures the bundle can find the identity file regardless of CWD at runtime const path = require("path"); const devIdentityPath = identityConfig.devIdentityPath || ".mcpi/identity.json"; const absoluteIdentityPath = path.isAbsolute(devIdentityPath) ? devIdentityPath : path.join(projectRoot, devIdentityPath); // Debug: log the resolved path console.log("[COMPILER] Identity path resolution:"); console.log(" projectRoot:", projectRoot); console.log(" devIdentityPath:", devIdentityPath); console.log(" absoluteIdentityPath:", absoluteIdentityPath); // Double-stringify for webpack DefinePlugin return { IDENTITY_CONFIG: JSON.stringify(JSON.stringify({ enabled: true, environment: identityConfig.environment || mode, devIdentityPath: absoluteIdentityPath, privacyMode: identityConfig.privacyMode || false, debug: identityConfig.debug || mode === "development", })), }; } function injectRuntimeConfigPath(projectRoot) { // Check if mcpi-runtime-config.ts exists in the project const fs = require("fs"); const path = require("path"); // Try multiple possible locations const possiblePaths = [ path.join(projectRoot, "src/mcpi-runtime-config.ts"), path.join(projectRoot, "src/mcpi-runtime-config.js"), path.join(projectRoot, "mcpi-runtime-config.ts"), path.join(projectRoot, "mcpi-runtime-config.js"), ]; let runtimeConfigPath = null; for (const p of possiblePaths) { if (fs.existsSync(p)) { runtimeConfigPath = p; console.log("[COMPILER] Found runtime config at:", p); break; } } // Single-stringify for webpack DefinePlugin (path strings don't need double-stringify) return { RUNTIME_CONFIG_PATH: JSON.stringify(runtimeConfigPath), }; }