/** * Memory Write Gating System * * Adds authority scope, TTL, decay, and contradiction tracking * to memory operations. Ensures that only authorized agents can * write to specific namespaces, enforces rate limits, and detects * contradictions between memory entries. * * @module @claude-flow/guidance/memory-gate */ /** * Authority definition for a memory-writing agent */ export interface MemoryAuthority { /** Agent identifier */ agentId: string; /** Role in the hierarchy */ role: 'queen' | 'coordinator' | 'worker' | 'observer'; /** Namespaces this agent is allowed to write to */ namespaces: string[]; /** Maximum writes allowed per minute */ maxWritesPerMinute: number; /** Whether this agent can delete entries */ canDelete: boolean; /** Whether this agent can overwrite existing entries */ canOverwrite: boolean; /** Trust level from 0 (untrusted) to 1 (fully trusted) */ trustLevel: number; } /** * A gated memory entry with metadata for TTL, decay, lineage, and contradictions */ export interface MemoryEntry { /** Entry key */ key: string; /** Namespace the entry belongs to */ namespace: string; /** The stored value */ value: unknown; /** SHA-256 hash of the serialized value */ valueHash: string; /** Authority that created/last wrote this entry */ authority: MemoryAuthority; /** Timestamp when the entry was created (ms since epoch) */ createdAt: number; /** Timestamp of the last update (ms since epoch) */ updatedAt: number; /** Time-to-live in milliseconds, or null for no expiry */ ttlMs: number | null; /** Decay rate from 0 (no decay) to 1 (immediate decay) */ decayRate: number; /** Confidence score from 0 to 1, decays over time */ confidence: number; /** Lineage tracking for provenance */ lineage: { parentKey?: string; derivedFrom?: string[]; operation: string; }; /** Detected contradictions with other entries */ contradictions: Array<{ entryKey: string; description: string; resolvedAt?: number; }>; } /** * Result of evaluating a write request */ export interface WriteDecision { /** Whether the write is allowed */ allowed: boolean; /** Human-readable reason for the decision */ reason: string; /** Contradictions detected with existing entries */ contradictions: Array<{ existingKey: string; description: string; }>; /** Authority check result */ authorityCheck: { passed: boolean; requiredRole: string; actualRole: string; }; /** Rate limit check result */ rateCheck: { passed: boolean; writesInWindow: number; limit: number; }; /** Overwrite permission check result */ overwriteCheck: { isOverwrite: boolean; allowed: boolean; }; } /** * Configuration for the MemoryWriteGate */ export interface MemoryWriteGateConfig { /** Pre-registered authorities */ authorities?: MemoryAuthority[]; /** Similarity threshold for contradiction detection (0-1) */ contradictionThreshold?: number; /** Default TTL for new entries in ms (null = no expiry) */ defaultTtlMs?: number; /** Default decay rate for new entries (0-1) */ defaultDecayRate?: number; /** Whether to run contradiction detection on writes */ enableContradictionTracking?: boolean; } /** * Memory Write Gate * * Controls write access to the memory system by enforcing: * - Authority checks (namespace access, role hierarchy) * - Rate limiting (sliding window per agent) * - Overwrite permissions * - Contradiction detection against existing entries * - TTL and confidence decay tracking */ export declare class MemoryWriteGate { private authorities; private writeTimestamps; private contradictionThreshold; private defaultTtlMs; private defaultDecayRate; private enableContradictionTracking; private contradictionResolutions; constructor(config?: MemoryWriteGateConfig); /** * Evaluate whether a write operation should be allowed. * * Steps: * 1. Check authority (namespace allowed, role sufficient) * 2. Check rate limit * 3. Check overwrite permission * 4. Detect contradictions against existing entries * 5. Return decision */ evaluateWrite(authority: MemoryAuthority, key: string, namespace: string, value: unknown, existingEntries?: MemoryEntry[]): WriteDecision; /** * Register a new authority or update an existing one */ registerAuthority(authority: MemoryAuthority): void; /** * Compute the current confidence for an entry based on decay over time. * * Uses exponential decay: confidence = initialConfidence * e^(-decayRate * ageHours) * where ageHours is (now - updatedAt) / 3600000 */ computeConfidence(entry: MemoryEntry): number; /** * Get all entries whose TTL has been exceeded */ getExpiredEntries(entries: MemoryEntry[]): MemoryEntry[]; /** * Get entries whose decayed confidence has dropped below a threshold */ getDecayedEntries(entries: MemoryEntry[], threshold: number): MemoryEntry[]; /** * Detect contradictions between a new value and existing entries. * * Uses string-based pattern matching to find conflicting statements * (must vs never, always vs never, require vs forbid, etc.) */ detectContradictions(newValue: unknown, existingEntries: MemoryEntry[]): Array<{ entryKey: string; description: string; }>; /** * Mark a contradiction as resolved */ resolveContradiction(entryKey: string, resolution: string): void; /** * Get the authority for an agent by ID */ getAuthorityFor(agentId: string): MemoryAuthority | undefined; /** * Get the current rate limit status for an agent */ getRateLimitStatus(agentId: string): { writesInWindow: number; limit: number; resetAt: number; }; /** Get the default TTL in ms */ getDefaultTtlMs(): number | null; /** Get the default decay rate */ getDefaultDecayRate(): number; /** Check if contradiction tracking is enabled */ isContradictionTrackingEnabled(): boolean; /** Get the contradiction resolution for an entry key */ getContradictionResolution(entryKey: string): string | undefined; /** * Check whether an authority is allowed to write to a namespace */ private checkAuthority; /** * Check rate limit using a sliding window of write timestamps */ private checkRateLimit; /** * Record a write timestamp for an agent */ private recordWrite; } /** * Create a MemoryWriteGate instance with optional configuration */ export declare function createMemoryWriteGate(config?: MemoryWriteGateConfig): MemoryWriteGate; /** * Create a new MemoryEntry with defaults applied */ export declare function createMemoryEntry(key: string, namespace: string, value: unknown, authority: MemoryAuthority, options?: { ttlMs?: number | null; decayRate?: number; confidence?: number; lineage?: MemoryEntry['lineage']; }): MemoryEntry; //# sourceMappingURL=memory-gate.d.ts.map