UNPKG

@kya-os/mcp-i

Version:

The TypeScript MCP framework with identity features built-in

47 lines (46 loc) 1.84 kB
"use strict"; /** * Resume Token Store Factory * * Selects a {@link ResumeTokenStore} implementation from config, mirroring the * delegation-verifier factory (`createDelegationVerifier`). This replaces the * hardcoded in-memory store in the runtime so consent→reuse can be made durable * (Cloudflare KV) on multi-instance / serverless deployments, while keeping the * in-memory store as an EXPLICIT single-process dev default. */ Object.defineProperty(exports, "__esModule", { value: true }); exports.createResumeTokenStore = createResumeTokenStore; const mcp_i_core_1 = require("@kya-os/mcp-i-core"); const resume_token_store_kv_1 = require("./resume-token-store-kv"); const DEFAULT_TTL_MS = 600_000; function invalidConfig(message) { const runtimeError = { error: "invalid_config", message, httpStatus: 500, }; const error = new Error(runtimeError.message); Object.assign(error, runtimeError); return error; } /** * Create a resume-token store from config. Memory is an explicit opt-in for * single-process development; durable stores must be selected deliberately. */ function createResumeTokenStore(config) { const ttlMs = config.ttlMs ?? DEFAULT_TTL_MS; switch (config.type) { case "cloudflare-kv": { if (!config.kvNamespace) { throw invalidConfig("Resume token store 'cloudflare-kv' requires kvNamespace in config"); } return new resume_token_store_kv_1.CloudflareKVResumeTokenStore(config.kvNamespace, ttlMs); } case "memory": return new mcp_i_core_1.MemoryResumeTokenStore(ttlMs); default: { const configType = "type" in config ? config.type : "unknown"; throw invalidConfig(`Unknown resume token store type: ${configType}`); } } }