SessionManager

View as MarkdownOpen in Claude

SessionManager provides stateless HMAC-SHA256 token generation and validation for SWAIG function call authentication. Tokens encode a call ID, function name, expiry, and nonce, signed with a shared secret. It also supports per-session metadata storage with automatic cleanup.

1import { SessionManager } from '@signalwire/sdk';
2
3const sm = new SessionManager(900); // 15-minute token expiry
4const token = sm.generateToken('get_weather', 'call-123');
5const valid = sm.validateToken('call-123', 'get_weather', token);

Constructor

tokenExpirySecs
numberDefaults to 900

Token validity duration in seconds.

secretKey
string

HMAC signing secret. A random 32-byte key is generated if omitted.

Methods

Example

1import { SessionManager } from '@signalwire/sdk';
2
3const sm = new SessionManager();
4const token = sm.generateToken('get_weather', 'call-abc123');
5
6// Later, validate the token
7const valid = sm.validateToken('call-abc123', 'get_weather', token);
8console.log('Token valid:', valid); // true