UNPKG

@kya-os/mcp-i

Version:

The TypeScript MCP framework with identity features built-in

80 lines (79 loc) 2.75 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.detectStorageMode = detectStorageMode; exports.createStorageConfig = createStorageConfig; exports.validateStorageMode = validateStorageMode; exports.getStorageModeDescription = getStorageModeDescription; exports.isEncryptionRequired = isEncryptionRequired; exports.isReceiptVerificationAvailable = isReceiptVerificationAvailable; const registry_1 = require("@kya-os/contracts/registry"); /** * Storage configuration utilities for XMCP-I */ /** * Detects and validates the storage mode from environment variables */ function detectStorageMode() { const envValue = process.env[registry_1.STORAGE_MODE_ENV_VAR]; if (!envValue) { return registry_1.DEFAULT_STORAGE_MODE; } const result = registry_1.StorageModeSchema.safeParse(envValue); if (!result.success) { console.warn(`Invalid ${registry_1.STORAGE_MODE_ENV_VAR}="${envValue}". Valid values: ktaEncrypted, hybridReceiptsOnly, selfHostedAuthoritative. Using default: ${registry_1.DEFAULT_STORAGE_MODE}`); return registry_1.DEFAULT_STORAGE_MODE; } return result.data; } /** * Creates a complete storage configuration with defaults */ function createStorageConfig(overrides) { const mode = detectStorageMode(); const config = { mode, encryptionEnabled: mode === "ktaEncrypted", receiptVerificationEnabled: true, ktaBaseURL: "https://knowthat.ai", ...overrides, }; const result = registry_1.StorageConfigSchema.safeParse(config); if (!result.success) { throw new Error(`Invalid storage configuration: ${result.error.message}`); } return result.data; } /** * Validates storage mode configuration */ function validateStorageMode(mode) { return registry_1.StorageModeSchema.safeParse(mode).success; } /** * Gets storage mode description for logging/debugging */ function getStorageModeDescription(mode) { switch (mode) { case "ktaEncrypted": return "KTA stores encrypted credential/delegation objects"; case "hybridReceiptsOnly": return "KTA stores receipts only; objects stored by issuer/recipient"; case "selfHostedAuthoritative": return "Customer stores object + log; KTA mirrors receipt/pointer"; default: return "Unknown storage mode"; } } /** * Determines if encryption is required for the given storage mode */ function isEncryptionRequired(mode) { return mode === "ktaEncrypted"; } /** * Determines if receipt verification is available for the given storage mode */ function isReceiptVerificationAvailable(_mode) { // All modes support receipt verification return true; }