@kya-os/mcp-i
Version:
The TypeScript MCP framework with identity features built-in
49 lines (48 loc) • 2.53 kB
JavaScript
;
/**
* Session Management for XMCP-I Runtime â Node.js adapter
*
* Re-exports SessionManager from @kya-os/mcp-i-core and wires in
* NodeCryptoProvider as the default. All existing call sites remain
* compatible: `new SessionManager()` and `new SessionManager(config)` work.
*
* Requirements: 4.5-4.9, 19.1-19.2
*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.defaultSessionManager = exports.SessionManager = exports.validateHandshakeFormat = exports.createHandshakeRequest = void 0;
const mcp_i_runtime_1 = require("@kya-os/mcp-i-runtime");
Object.defineProperty(exports, "createHandshakeRequest", { enumerable: true, get: function () { return mcp_i_runtime_1.createHandshakeRequest; } });
Object.defineProperty(exports, "validateHandshakeFormat", { enumerable: true, get: function () { return mcp_i_runtime_1.validateHandshakeFormat; } });
const mcp_i_runtime_2 = require("@kya-os/mcp-i-runtime");
// C2 (#2916): the CJS/ESM (TS1479) blocker is resolved — PR-0's loadDifCore()
// seam (mcp-i-core/src/runtime/dif-core.ts) reaches the ESM-only @kya-os/mcp from
// CJS. The SessionManager re-home stays deferred on the remaining blocker: DIF
// emits kyaos_* session IDs, a wire-format change owned by the C4 (#2918)
// dual-accept window. Keep importing the OLD SessionManager from @kya-os/mcp-i-core
// until then.
const node_providers_1 = require("../providers/node-providers");
function resolveNodeConfig(config) {
const skewEnv = process.env["XMCP_I_TS_SKEW_SEC"];
const ttlEnv = process.env["XMCP_I_SESSION_TTL_MIN"];
const parsedSkew = skewEnv ? parseInt(skewEnv, 10) : undefined;
const parsedTtl = ttlEnv ? parseInt(ttlEnv, 10) : undefined;
return {
...config,
timestampSkewSeconds: config.timestampSkewSeconds ??
(parsedSkew !== undefined && !isNaN(parsedSkew) ? parsedSkew : undefined),
sessionTtlMinutes: config.sessionTtlMinutes ??
(parsedTtl !== undefined && !isNaN(parsedTtl) ? parsedTtl : undefined),
};
}
class SessionManager extends mcp_i_runtime_1.SessionManager {
constructor(configOrCrypto, config) {
if (configOrCrypto instanceof mcp_i_runtime_2.CryptoProvider) {
super(configOrCrypto, resolveNodeConfig(config ?? {}));
}
else {
super(new node_providers_1.NodeCryptoProvider(), resolveNodeConfig(configOrCrypto ?? {}));
}
}
}
exports.SessionManager = SessionManager;
exports.defaultSessionManager = new SessionManager();