Files
letta-code/src/permissions/session.ts
2025-10-24 21:19:24 -07:00

59 lines
1.3 KiB
TypeScript

// src/permissions/session.ts
// In-memory permission store for session-only rules
import type { PermissionRules } from "./types";
/**
* Session-only permissions that are not persisted to disk.
* These rules are cleared when the application exits.
*/
class SessionPermissions {
private sessionRules: PermissionRules = {
allow: [],
deny: [],
ask: [],
};
/**
* Add a permission rule for this session only
*/
addRule(rule: string, type: "allow" | "deny" | "ask"): void {
const rules = this.sessionRules[type];
if (rules && !rules.includes(rule)) {
rules.push(rule);
}
}
/**
* Get all session rules
*/
getRules(): PermissionRules {
return {
allow: [...(this.sessionRules.allow || [])],
deny: [...(this.sessionRules.deny || [])],
ask: [...(this.sessionRules.ask || [])],
};
}
/**
* Clear all session rules
*/
clear(): void {
this.sessionRules = {
allow: [],
deny: [],
ask: [],
};
}
/**
* Check if a rule exists in session permissions
*/
hasRule(rule: string, type: "allow" | "deny" | "ask"): boolean {
return this.sessionRules[type]?.includes(rule) || false;
}
}
// Singleton instance
export const sessionPermissions = new SessionPermissions();