UNPKG

@bonginkan/maria

Version:

MARIA OS v5.9.5 – Self-Evolving Organizational Intelligence OS | Speed Improvement Phase 3: LLM Optimization + Command Refactoring | Performance Measurement + Run Evidence System | Zero ESLint/TypeScript Errors | 人とAIが役割を持ち、学び、進化し続けるための仕事のOS | GraphRAG ×

173 lines (172 loc) 4.45 kB
/** * Access Control Manager * Enterprise-grade access control system for MARIA * Implements hierarchical RBAC with fine-grained permissions */ import { EventEmitter } from "node:events"; export interface User { id: string; email: string; name: string; roles: Role[]; permissions?: PermissionSet; organizationId: string; teamIds?: string[]; departmentId?: string; attributes?: Record<string, unknown>; } export interface ResourceIdentifier { resource: string; id?: string; /** * Optional additional resource metadata used by enterprise compliance modules. * Keep these optional to avoid forcing all call-sites to provide them. */ type?: string; path?: string; _path?: string; classification?: { level?: string; tags?: string[]; }; } export type _ResourceIdentifier = ResourceIdentifier; export interface AccessRequest { operation: "read" | "write" | "delete" | "execute" | "share" | "admin"; resource: ResourceIdentifier; context?: Record<string, unknown>; } export interface Role { id: string; name: string; level: "individual" | "team" | "department" | "organization"; permissions: PermissionSet; priority: number; inheritFromParent: boolean; overrideChild: boolean; } export interface PermissionSet { resources: Record<string, ResourcePermission>; actions: string[]; conditions?: PermissionCondition[]; } export interface ResourcePermission { read: boolean; write: boolean; delete: boolean; execute: boolean; share?: boolean; admin?: boolean; } export interface PermissionCondition { type: "time" | "location" | "resource" | "custom"; operator: "equals" | "contains" | "matches" | "between"; value: unknown; } export interface HierarchyLevel { level: Role["level"]; priority: number; inheritFromParent: boolean; overrideChild: boolean; } export interface DataClassification { levels: string[]; defaultLevel: string; rules: ClassificationRule[]; } export interface ClassificationRule { pattern: string | RegExp; level: string; tags?: string[]; } export interface AccessControlConfig { organizationId: string; hierarchyLevels: HierarchyLevel[]; defaultPermissions: PermissionSet; dataClassification: DataClassification; auditEnabled: boolean; } export interface AccessDecision { allowed: boolean; reason?: string; appliedRoles?: Role[]; conditions?: PermissionCondition[]; } export declare class AccessControlManager extends EventEmitter { private config; private users; private roles; private sessions; private cache; constructor(config: AccessControlConfig); private initialize; /** * Check if a user has access to a resource */ checkAccess(userId: string, resource: string, action: string, context?: Record<string, unknown>): Promise<AccessDecision>; /** * Grant a role to a user */ grantRole(userId: string, roleId: string): Promise<void>; /** * Revoke a role from a user */ revokeRole(userId: string, roleId: string): Promise<void>; /** * Register a new user */ registerUser(user: User): Promise<void>; /** * Create a custom role */ createRole(role: Role): Promise<void>; /** * Get classification level for data */ getDataClassification(data: string): string; /** * Collect all permissions for a user */ private collectPermissions; /** * Evaluate permissions against a resource and action */ private evaluatePermissions; /** * Map an action to resource permissions */ private mapActionToPermission; /** * Evaluate permission conditions */ private evaluateConditions; /** * Evaluate a single condition */ private evaluateCondition; /** * Find parent role in hierarchy */ private findParentRole; /** * Clear cache for a user */ private clearUserCache; /** * Get user by ID */ getUser(userId: string): User | undefined; /** * Get role by ID */ getRole(roleId: string): Role | undefined; /** * List all users */ listUsers(): User[]; /** * List all roles */ listRoles(): Role[]; } export declare const accessControlManager: AccessControlManager;