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