Chat_response.Agent_LRU
type 'a entry = 'a Ttl_lru_cache.Make(Agent_key).entry
val sexp_of_entry : ('a -> Sexplib0.Sexp.t) -> 'a entry -> Sexplib0.Sexp.t
val entry_of_sexp : (Sexplib0.Sexp.t -> 'a) -> Sexplib0.Sexp.t -> 'a entry
val bin_shape_entry : Bin_prot.Shape.t -> Bin_prot.Shape.t
val bin_size_entry : 'a Bin_prot.Size.sizer -> 'a entry Bin_prot.Size.sizer
val bin_write_entry :
'a Bin_prot.Write.writer ->
'a entry Bin_prot.Write.writer
val bin_writer_entry :
'a Bin_prot.Type_class.writer ->
'a entry Bin_prot.Type_class.writer
val bin_read_entry : 'a Bin_prot.Read.reader -> 'a entry Bin_prot.Read.reader
val __bin_read_entry__ :
'a Bin_prot.Read.reader ->
(int -> 'a entry) Bin_prot.Read.reader
val bin_reader_entry :
'a Bin_prot.Type_class.reader ->
'a entry Bin_prot.Type_class.reader
val bin_entry : 'a Bin_prot.Type_class.t -> 'a entry Bin_prot.Type_class.t
val hash_fold_entry :
(Ppx_hash_lib.Std.Hash.state -> 'a -> Ppx_hash_lib.Std.Hash.state) ->
Ppx_hash_lib.Std.Hash.state ->
'a entry ->
Ppx_hash_lib.Std.Hash.state
type 'a t = 'a Ttl_lru_cache.Make(Agent_key).t
val create : max_size:int -> unit -> 'a t
val is_expired : 'a entry -> now:Core.Time_ns.Span.t -> bool
val remove_expired : 'a t -> unit
val set_with_ttl :
'a t ->
key:Agent_key.t ->
data:'a ->
ttl:Core.Time_ns.Span.t ->
unit
val set : 'a t -> key:Agent_key.t -> data:'a entry -> unit
val find : 'a t -> Agent_key.t -> 'a option
val mem : 'a t -> Agent_key.t -> bool
val remove : 'a t -> Agent_key.t -> [ `No_such_key | `Ok ]
val clear : 'a t -> [ `Dropped of int ]
val length : 'a t -> int
val max_size : 'a t -> int
val hit_rate : 'a t -> float
val stats :
?sexp_of_key:(Agent_key.t -> Sexplib0.Sexp.t) ->
'a t ->
Sexplib0.Sexp.t
val is_empty : 'a t -> bool
val to_alist : 'a t -> (Agent_key.t * 'a entry) list
val set_max_size : 'a t -> max_size:int -> [ `Dropped of int ]
val find_or_add :
'a t ->
Agent_key.t ->
default:(unit -> 'a) ->
ttl:Core.Time_ns.Span.t ->
'a
val find_and_remove : 'a t -> Agent_key.t -> 'a option