Classes/Components/OAIMemory.ps1

class OAIMemory {
    [OAIComplianceRequestClient]$Client

    OAIMemory([OAIComplianceRequestClient]$client) {
        $this.Client = $client

    }

    #region Memory Operations
    # Get all workspace memories with optional top limit
    [object]GetMemories([int]$top = 0) {
        return $this.Client.Paginate(@("memories"), @{}, $top)

    }

    # Get user memories with optional top limit
    [object]GetUserMemories([string]$userId, [int]$top = 0) {
        $segments = @("users", $userId, "memories")
        return $this.Client.Paginate($segments, @{}, $top)

    }

    # Get user memories since timestamp
    [object]GetUserMemoriesSince([string]$userId, $sinceTimestamp, [int]$top = 0) {
        $unix_timestamp = [OAIComplianceRequestClient]::ConvertToUnixTimestamp($sinceTimestamp)
        $query_params = @{}
        $query_params["since_timestamp"] = $unix_timestamp
        $segments = @("users", $userId, "memories")
        return $this.Client.Paginate($segments, $query_params, $top)

    }

    # Delete specific memory entry
    [object]DeleteMemoryEntry([string]$userId, [string]$memoryContextId, [string]$memoryId) {
        $segments = @("users", $userId, "memory_contexts", $memoryContextId, "memories", $memoryId)
        return $this.Client.InvokeDeleteRequest($segments, @{})

    }
    #endregion
}