@sirmrmarty/n8n-nodes-tmux-orchestrator
Version:
n8n nodes for orchestrating Claude AI agents through tmux sessions
63 lines (62 loc) • 2.17 kB
TypeScript
export interface AuthenticationCredentials {
userId: string;
apiKey: string;
sessionToken?: string;
permissions: string[];
expiresAt: number;
}
export interface AuthenticationResult {
authenticated: boolean;
authorized: boolean;
userId?: string;
permissions?: string[];
reason?: string;
sessionToken?: string;
}
export interface OperationContext {
operation: string;
resourceId?: string;
requesterId?: string;
timestamp: number;
metadata?: Record<string, any>;
}
export declare class AuthenticationLayer {
private static readonly SESSION_DURATION;
private static readonly API_KEY_LENGTH;
private static readonly SESSION_TOKEN_LENGTH;
private static readonly MAX_SESSIONS_PER_USER;
private static readonly AUTH_CACHE_DURATION;
private static activeSessions;
private static authCache;
private static readonly CRITICAL_OPERATIONS;
private static readonly OPERATION_PERMISSIONS;
static generateApiKey(): string;
private static generateSessionToken;
static createUserCredentials(userId: string, permissions: string[]): Promise<{
apiKey: string;
userId: string;
permissions: string[];
}>;
static authenticateUser(userId: string, apiKey: string): Promise<AuthenticationResult>;
static authenticateSession(sessionToken: string): AuthenticationResult;
static authorizeOperation(operation: string, userPermissions: string[]): {
authorized: boolean;
reason?: string;
};
static authenticateAndAuthorize(operation: string, credentials: {
userId?: string;
apiKey?: string;
sessionToken?: string;
}, context?: OperationContext): Promise<AuthenticationResult>;
private static logOperation;
private static cleanupUserSessions;
static revokeSession(sessionToken: string): Promise<boolean>;
static revokeUserSessions(userId: string): Promise<number>;
static getSessionStats(): {
activeSessions: number;
uniqueUsers: number;
expiringSoon: number;
};
static initialize(): Promise<void>;
private static performPeriodicCleanup;
}