UNPKG

harmonycode

Version:

The AI collaboration framework that prevents echo chambers - Real-time collaboration with diversity enforcement

148 lines 4.13 kB
/** * HarmonyCode v3.2.0 - Identity Manager * Implements persistent agent identity separate from roles and sessions * Enhanced with unique name enforcement and session cleanup (v3.2) */ import { PerspectiveProfile } from '../diversity/types'; export interface AgentIdentity { agentId: string; displayName: string; firstSeen: Date; lastSeen: Date; currentRole: string; roleHistory: RoleTransition[]; currentPerspective?: PerspectiveProfile; perspectiveHistory: PerspectiveTransition[]; stats: AgentStats; currentSessionId?: string; lastActivityTime?: Date; authToken: string; } export interface RoleTransition { role: string; timestamp: Date; sessionId: string; } export interface PerspectiveTransition { perspective: PerspectiveProfile; timestamp: Date; reason?: string; } export interface AgentStats { totalSessions: number; totalMessages: number; totalTasks: number; totalEdits: number; diversityScore: number; agreementRate: number; evidenceRate: number; } export declare class IdentityManager { private identities; private tokenToAgent; private sessionToAgent; private nameToAgent; private persistPath; constructor(workspacePath?: string); /** * Register a new agent or retrieve existing one */ registerAgent(displayName: string, role?: string): AgentIdentity; /** * Authenticate an agent using their token */ authenticateAgent(authToken: string): AgentIdentity | null; /** * Connect an agent to a session */ connectAgentToSession(agentId: string, sessionId: string): void; /** * Disconnect an agent from their session */ disconnectAgent(sessionId: string): void; /** * Change an agent's role */ changeAgentRole(agentId: string, newRole: string, sessionId: string): void; /** * Change an agent's perspective (for diversity) */ changeAgentPerspective(agentId: string, newPerspective: PerspectiveProfile, reason?: string): void; /** * Get agent by session ID */ getAgentBySessionId(sessionId: string): AgentIdentity | null; /** * Get agent by agent ID */ getAgentById(agentId: string): AgentIdentity | null; /** * Update agent statistics */ updateAgentStats(agentId: string, updates: Partial<AgentStats>): void; /** * Get all active agents */ getActiveAgents(): AgentIdentity[]; /** * Get agents by role */ getAgentsByRole(role: string): AgentIdentity[]; /** * Get agent history report */ getAgentHistoryReport(agentId: string): string; /** * Find agent by display name (v3.2) */ findAgentByDisplayName(displayName: string): AgentIdentity | null; /** * Check if a display name is available (v3.2) */ isNameAvailable(displayName: string): boolean; /** * Get or create agent with unique name enforcement (v3.2) */ getOrCreateAgent(displayName: string, role?: string, authToken?: string): AgentIdentity; /** * Create new agent with unique name (v3.2) */ createNewAgent(displayName: string, role: string): AgentIdentity; /** * Get name suggestions when a name is taken (v3.2) */ getNameSuggestions(baseName: string, count?: number): string[]; /** * Update agent activity time (v3.2) */ updateAgentActivity(agentId: string): void; /** * Clean up inactive sessions (v3.2) */ cleanupInactiveSessions(timeoutMs?: number): number; /** * Get session activity report (v3.2) */ getSessionActivityReport(): { active: number; inactive: number; total: number; }; /** * Generate unique agent ID */ private generateAgentId; /** * Generate authentication token */ private generateAuthToken; /** * Load identities from disk */ private loadIdentities; /** * Save identities to disk */ private saveIdentities; } //# sourceMappingURL=identity-manager.d.ts.map