UNPKG

@kya-os/mcp-i

Version:

The TypeScript MCP framework with identity features built-in

119 lines (118 loc) 4.76 kB
"use strict"; /** * MCPINodeRuntimeWrapper * * Node.js-specific runtime that extends the core runtime with Node.js providers. * Provides backward compatibility by accepting legacy configuration format. */ var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.MCPIRuntimeWrapper = exports.MCPINodeRuntimeWrapper = void 0; exports.createMCPIRuntime = createMCPIRuntime; const mcp_i_core_1 = require("@kya-os/mcp-i-core"); const node_providers_1 = require("../providers/node-providers"); const path_1 = __importDefault(require("path")); /** * Convert legacy config to provider-based config */ function createProvidersFromConfig(config) { const cryptoProvider = new node_providers_1.NodeCryptoProvider(); const clockProvider = new node_providers_1.NodeClockProvider(); const fetchProvider = new node_providers_1.NodeFetchProvider(); const identityPath = config.identity?.devIdentityPath || path_1.default.join(process.cwd(), ".mcp-i"); const storageProvider = new node_providers_1.FileStorageProvider(identityPath); const identityProvider = new node_providers_1.FileIdentityProvider(identityPath, cryptoProvider); const nonceCacheProvider = (0, node_providers_1.getNonceCacheProvider)(); return { cryptoProvider, clockProvider, fetchProvider, storageProvider, nonceCacheProvider, identityProvider, environment: config.identity?.environment || "development", session: { timestampSkewSeconds: config.session?.timestampSkewSeconds || 120, ttlMinutes: config.session?.sessionTtlMinutes || 30, }, audit: config.audit ? { enabled: config.audit.enabled !== false, logFunction: config.audit.logFunction, includePayloads: config.audit.includePayloads, includeProofHashes: config.audit.includeProofHashes, } : undefined, wellKnown: config.wellKnown ? { enabled: true, serviceName: config.wellKnown.agentMetadata?.name, } : undefined, }; } /** * Node.js-specific runtime implementation */ class MCPINodeRuntimeWrapper extends mcp_i_core_1.MCPIRuntimeBase { legacyConfig; // accessControlService is inherited from MCPIRuntimeBase (protected), no need to redeclare // proofVerifier is inherited from MCPIRuntimeBase (protected), no need to redeclare constructor(config = {}) { const coreConfig = createProvidersFromConfig(config); super(coreConfig); this.legacyConfig = config; // Instantiate ProofVerifier // Access protected property from base class using type assertion this.proofVerifier = new mcp_i_core_1.ProofVerifier({ cryptoProvider: coreConfig.cryptoProvider, clockProvider: coreConfig.clockProvider, nonceCacheProvider: coreConfig.nonceCacheProvider, fetchProvider: coreConfig.fetchProvider, timestampSkewSeconds: coreConfig.session?.timestampSkewSeconds || 120, }); // Instantiate AccessControlApiService if API key is available const apiKey = process.env.AGENTSHIELD_API_KEY; const apiUrl = process.env.AGENTSHIELD_API_URL || "https://kya.vouched.id"; if (apiKey) { this.accessControlService = new mcp_i_core_1.AccessControlApiService({ baseUrl: apiUrl, apiKey, fetchProvider: coreConfig.fetchProvider, logger: (msg, data) => { if (coreConfig.environment === "development") { console.log(`[AccessControl] ${msg}`, data); } }, }); } } /** * Set AccessControlApiService (for testing or manual injection) */ setAccessControlService(service) { this.accessControlService = service; } /** * Set ProofVerifier (for testing or manual injection) */ setProofVerifier(verifier) { // Set the base class protected property directly // Use type assertion to access protected property from base class this.proofVerifier = verifier; } } exports.MCPINodeRuntimeWrapper = MCPINodeRuntimeWrapper; /** * Factory function for creating Node.js runtime */ function createMCPIRuntime(config) { return new MCPINodeRuntimeWrapper(config); } /** * Alias for backward compatibility * @deprecated Use MCPINodeRuntimeWrapper */ exports.MCPIRuntimeWrapper = MCPINodeRuntimeWrapper;