@kya-os/mcp-i
Version:
The TypeScript MCP framework with identity features built-in
80 lines (79 loc) • 2.75 kB
JavaScript
;
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;
}