module Proteome.Plugin where

import Conc (ConcStack, Lock, Restoration, interpretAtomic, interpretLockReentrant, withAsync_)
import Polysemy.Chronos (ChronosTime)
import Ribosome (
  BootError,
  Event,
  Execution (Async, Sync),
  Persist,
  PersistError,
  PluginName,
  Reports,
  Rpc,
  RpcError,
  RpcHandler,
  Scratch,
  SettingError,
  Settings,
  completeBuiltin,
  interpretPersist,
  interpretPersistPath,
  logReport,
  resumeLogReport,
  rpc,
  rpcAutocmd,
  rpcCommand,
  rpcFunction,
  runNvimPluginIO,
  )
import Ribosome.Data.PersistPathError (PersistPathError)
import Ribosome.Effect.PersistPath (PersistPath)
import Ribosome.Host.Data.Report (LogReport)
import Ribosome.Menu (ModalWindowMenus, NvimMenus, WindowMenus, interpretMenus, interpretWindowMenu)

import Proteome.Add (proAdd, proAddCmd, proAddMenu)
import Proteome.BufEnter (Mru, bufEnter)
import Proteome.Buffers (proBuffers)
import Proteome.Config (proReadConfig)
import Proteome.Data.AddItem (AddItem)
import Proteome.Data.CurrentTag (CurrentTag)
import Proteome.Data.Env (Env)
import Proteome.Data.FilesState (FilesState)
import Proteome.Data.GrepOutputLine (GrepOutputLine)
import Proteome.Data.ListedBuffer (ListedBuffer)
import Proteome.Data.PersistBuffers (PersistBuffers)
import Proteome.Data.ResolveError (ResolveError)
import Proteome.Diag (proDiag)
import Proteome.Filename (proCopy, proMove, proRemove)
import Proteome.Files (proFiles)
import Proteome.Grep (proGrep, proGrepIn, proGrepList, proGrepOpt, proGrepOptIn)
import Proteome.Grep.Replace (proReplaceQuit, proReplaceSave)
import Proteome.Init (proLoad, proLoadAfter, projectConfig, projectConfigAfter, resolveAndInitMain)
import Proteome.PersistBuffers (LoadBuffersLock, StoreBuffersLock, loadBuffers)
import Proteome.Project.Activate (proNext, proPrev)
import Proteome.Quit (proQuit)
import Proteome.Save (proSave)
import Proteome.Tags.Cycle (proNextTag)
import Proteome.Tags.Gen (TagsLock, proGenTags)
import Proteome.Tags.Menu (proTag, proTags)
import Proteome.Tags.State (TagsState)

type ProteomeStack =
  [
    AtomicState Env,
    AtomicState (Maybe CurrentTag),
    Lock @@ LoadBuffersLock,
    Lock @@ StoreBuffersLock,
    Lock @@ TagsLock,
    Lock @@ Mru
  ]

type ProteomeProdStack =
  [
    Persist PersistBuffers !! PersistError,
    PersistPath !! PersistPathError,
    ModalWindowMenus () AddItem !! RpcError,
    ModalWindowMenus () ListedBuffer !! RpcError,
    ModalWindowMenus () GrepOutputLine !! RpcError,
    WindowMenus () FilesState !! RpcError,
    WindowMenus () TagsState !! RpcError
  ] ++ NvimMenus ++ ProteomeStack

handlers ::
  Members ProteomeProdStack r =>
  Members [Settings !! SettingError, Scratch !! RpcError, Rpc !! RpcError, Reports, Reader PluginName] r =>
  Members ConcStack r =>
  Members [DataLog LogReport, ChronosTime, Log, Mask Restoration, Race, Resource, Async, Embed IO, Final IO] r =>
  [RpcHandler r]
handlers :: forall (r :: [(* -> *) -> * -> *]).
(Members ProteomeProdStack r,
 Members
   '[Resumable SettingError Settings, Resumable RpcError Scratch,
     Resumable RpcError Rpc, Reports, Reader PluginName]
   r,
 Members
   '[UninterruptibleMaskIO, UninterruptibleMaskIO,
     Scoped () (MVar ()) Gate, Race, Async, Resource, Embed IO,
     Final IO]
   r,
 Members
   '[DataLog LogReport, Time Time Date, Log, UninterruptibleMaskIO,
     Race, Resource, Async, Embed IO, Final IO]
   r) =>
[RpcHandler r]
handlers =
  RpcName -> Execution -> Handler r () -> [RpcHandler r]
forall (r :: [(* -> *) -> * -> *]) h.
(HandlerCodec h r, CommandHandler OptionStateZero h) =>
RpcName -> Execution -> h -> [RpcHandler r]
rpc RpcName
"ProDiag" Execution
Async Handler r ()
forall se (r :: [(* -> *) -> * -> *]).
Members
  '[Settings !! se, Resumable RpcError Scratch, AtomicState Env,
    Reports]
  r =>
Handler r ()
proDiag
  [RpcHandler r] -> [RpcHandler r] -> [RpcHandler r]
forall a. Semigroup a => a -> a -> a
<>
  RpcName -> Execution -> Handler r () -> [RpcHandler r]
forall (r :: [(* -> *) -> * -> *]) h.
(HandlerCodec h r, CommandHandler OptionStateZero h) =>
RpcName -> Execution -> h -> [RpcHandler r]
rpc RpcName
"ProSave" Execution
Async Handler r ()
forall (r :: [(* -> *) -> * -> *]).
(Member (Resumable PersistError (Persist PersistBuffers)) r,
 Members
   '[Resumable SettingError Settings, AtomicState Env,
     Tagged TagsLock Lock, DataLog LogReport]
   r,
 Members
   '[Tagged StoreBuffersLock Lock, AtomicState Env,
     Resumable RpcError Rpc, Reports, Resource, Log, Async, Embed IO]
   r) =>
Handler r ()
proSave
  [RpcHandler r] -> [RpcHandler r] -> [RpcHandler r]
forall a. Semigroup a => a -> a -> a
<>
  RpcName -> Execution -> Handler r () -> [RpcHandler r]
forall (r :: [(* -> *) -> * -> *]) h.
(HandlerCodec h r, CommandHandler OptionStateZero h) =>
RpcName -> Execution -> h -> [RpcHandler r]
rpc RpcName
"ProGenTags" Execution
Async Handler r ()
forall (r :: [(* -> *) -> * -> *]).
(Members
   '[AtomicState Env, Resumable SettingError Settings,
     DataLog LogReport, Tagged TagsLock Lock, Reports]
   r,
 Members '[Log, Resource, Async, Embed IO] r) =>
Handler r ()
proGenTags
  [RpcHandler r] -> [RpcHandler r] -> [RpcHandler r]
forall a. Semigroup a => a -> a -> a
<>
  RpcName -> Execution -> (Args -> Handler r ()) -> [RpcHandler r]
forall (r :: [(* -> *) -> * -> *]) h.
(HandlerCodec h r, CommandHandler OptionStateZero h) =>
RpcName -> Execution -> h -> [RpcHandler r]
rpc RpcName
"ProTags" Execution
Async Args -> Handler r ()
forall (r :: [(* -> *) -> * -> *]).
(Members TagsStack r,
 Members '[AtomicState Env, DataLog LogReport, Embed IO] r) =>
Args -> Handler r ()
proTags
  [RpcHandler r] -> [RpcHandler r] -> [RpcHandler r]
forall a. Semigroup a => a -> a -> a
<>
  RpcName -> Execution -> (Args -> Handler r ()) -> [RpcHandler r]
forall (r :: [(* -> *) -> * -> *]) h.
(HandlerCodec h r, CommandHandler OptionStateZero h) =>
RpcName -> Execution -> h -> [RpcHandler r]
rpc RpcName
"ProTag" Execution
Async Args -> Handler r ()
forall (r :: [(* -> *) -> * -> *]).
(Members TagsStack r,
 Members '[AtomicState Env, DataLog LogReport, Embed IO] r) =>
Args -> Handler r ()
proTag
  [RpcHandler r] -> [RpcHandler r] -> [RpcHandler r]
forall a. Semigroup a => a -> a -> a
<>
  RpcName -> Execution -> (Args -> Handler r ()) -> [RpcHandler r]
forall (r :: [(* -> *) -> * -> *]) h.
(HandlerCodec h r, CommandHandler OptionStateZero h) =>
RpcName -> Execution -> h -> [RpcHandler r]
rpc RpcName
"ProNextTag" Execution
Async Args -> Handler r ()
forall (r :: [(* -> *) -> * -> *]).
Members
  '[AtomicState (Maybe CurrentTag), AtomicState Env,
    Resumable RpcError Rpc, Embed IO]
  r =>
Args -> Handler r ()
proNextTag
  [RpcHandler r] -> [RpcHandler r] -> [RpcHandler r]
forall a. Semigroup a => a -> a -> a
<>
  RpcName
-> Execution -> (Maybe Args -> Handler r ()) -> [RpcHandler r]
forall (r :: [(* -> *) -> * -> *]) h.
(HandlerCodec h r, CommandHandler OptionStateZero h) =>
RpcName -> Execution -> h -> [RpcHandler r]
rpc RpcName
"ProGrep" Execution
Async Maybe Args -> Handler r ()
forall (r :: [(* -> *) -> * -> *]).
Members GrepStack r =>
Maybe Args -> Handler r ()
proGrep
  [RpcHandler r] -> [RpcHandler r] -> [RpcHandler r]
forall a. Semigroup a => a -> a -> a
<>
  RpcName
-> Execution
-> (Maybe Text -> Maybe Args -> Handler r ())
-> [RpcHandler r]
forall (r :: [(* -> *) -> * -> *]) h.
(HandlerCodec h r, CommandHandler OptionStateZero h) =>
RpcName -> Execution -> h -> [RpcHandler r]
rpc RpcName
"ProGrepIn" Execution
Async Maybe Text -> Maybe Args -> Handler r ()
forall (r :: [(* -> *) -> * -> *]).
Members GrepStack r =>
Maybe Text -> Maybe Args -> Handler r ()
proGrepIn
  [RpcHandler r] -> [RpcHandler r] -> [RpcHandler r]
forall a. Semigroup a => a -> a -> a
<>
  RpcName
-> Execution
-> (Text -> Maybe Args -> Handler r ())
-> [RpcHandler r]
forall (r :: [(* -> *) -> * -> *]) h.
(HandlerCodec h r, CommandHandler OptionStateZero h) =>
RpcName -> Execution -> h -> [RpcHandler r]
rpc RpcName
"ProGrepOpt" Execution
Async Text -> Maybe Args -> Handler r ()
forall (r :: [(* -> *) -> * -> *]).
Members GrepStack r =>
Text -> Maybe Args -> Handler r ()
proGrepOpt
  [RpcHandler r] -> [RpcHandler r] -> [RpcHandler r]
forall a. Semigroup a => a -> a -> a
<>
  RpcName
-> Execution
-> (Text -> Maybe Text -> Maybe Args -> Handler r ())
-> [RpcHandler r]
forall (r :: [(* -> *) -> * -> *]) h.
(HandlerCodec h r, CommandHandler OptionStateZero h) =>
RpcName -> Execution -> h -> [RpcHandler r]
rpc RpcName
"ProGrepOptIn" Execution
Async Text -> Maybe Text -> Maybe Args -> Handler r ()
forall (r :: [(* -> *) -> * -> *]).
Members GrepStack r =>
Text -> Maybe Text -> Maybe Args -> Handler r ()
proGrepOptIn
  [RpcHandler r] -> [RpcHandler r] -> [RpcHandler r]
forall a. Semigroup a => a -> a -> a
<>
  RpcName -> Execution -> Handler r () -> [RpcHandler r]
forall (r :: [(* -> *) -> * -> *]) h.
(HandlerCodec h r, CommandHandler OptionStateZero h) =>
RpcName -> Execution -> h -> [RpcHandler r]
rpc RpcName
"ProReplaceSave" Execution
Async Handler r ()
forall (r :: [(* -> *) -> * -> *]).
Members '[AtomicState Env, Resumable RpcError Rpc, Resource] r =>
Handler r ()
proReplaceSave
  [RpcHandler r] -> [RpcHandler r] -> [RpcHandler r]
forall a. Semigroup a => a -> a -> a
<>
  RpcName -> Execution -> Handler r () -> [RpcHandler r]
forall (r :: [(* -> *) -> * -> *]) h.
(HandlerCodec h r, CommandHandler OptionStateZero h) =>
RpcName -> Execution -> h -> [RpcHandler r]
rpc RpcName
"ProReplaceQuit" Execution
Async Handler r ()
forall (r :: [(* -> *) -> * -> *]).
Member (AtomicState Env) r =>
Handler r ()
proReplaceQuit
  [RpcHandler r] -> [RpcHandler r] -> [RpcHandler r]
forall a. Semigroup a => a -> a -> a
<>
  RpcName -> Execution -> Handler r () -> [RpcHandler r]
forall (r :: [(* -> *) -> * -> *]) h.
(HandlerCodec h r, CommandHandler OptionStateZero h) =>
RpcName -> Execution -> h -> [RpcHandler r]
rpc RpcName
"ProBuffers" Execution
Async Handler r ()
forall (r :: [(* -> *) -> * -> *]).
Members BuffersStack r =>
Handler r ()
proBuffers
  [RpcHandler r] -> [RpcHandler r] -> [RpcHandler r]
forall a. Semigroup a => a -> a -> a
<>
  RpcName -> Execution -> (ArgList -> Handler r ()) -> [RpcHandler r]
forall (r :: [(* -> *) -> * -> *]) h.
(HandlerCodec h r, CommandHandler OptionStateZero h) =>
RpcName -> Execution -> h -> [RpcHandler r]
rpc RpcName
"ProFiles" Execution
Async ArgList -> Handler r ()
forall (r :: [(* -> *) -> * -> *]).
(Members FilesStack r,
 Members
   '[Resumable RpcError Rpc, Resumable SettingError Settings] r) =>
ArgList -> Handler r ()
proFiles
  [RpcHandler r] -> [RpcHandler r] -> [RpcHandler r]
forall a. Semigroup a => a -> a -> a
<>
  RpcName -> Execution -> Handler r () -> [RpcHandler r]
forall (r :: [(* -> *) -> * -> *]) h.
(HandlerCodec h r, CommandHandler OptionStateZero h) =>
RpcName -> Execution -> h -> [RpcHandler r]
rpc RpcName
"ProPrev" Execution
Async Handler r ()
forall (r :: [(* -> *) -> * -> *]).
Members
  '[Resumable SettingError Settings, AtomicState Env,
    Reader PluginName, Resumable RpcError Rpc, Embed IO]
  r =>
Handler r ()
proPrev
  [RpcHandler r] -> [RpcHandler r] -> [RpcHandler r]
forall a. Semigroup a => a -> a -> a
<>
  RpcName -> Execution -> Handler r () -> [RpcHandler r]
forall (r :: [(* -> *) -> * -> *]) h.
(HandlerCodec h r, CommandHandler OptionStateZero h) =>
RpcName -> Execution -> h -> [RpcHandler r]
rpc RpcName
"ProNext" Execution
Async Handler r ()
forall (r :: [(* -> *) -> * -> *]).
Members
  '[Resumable SettingError Settings, AtomicState Env,
    Reader PluginName, Resumable RpcError Rpc, Embed IO]
  r =>
Handler r ()
proNext
  [RpcHandler r] -> [RpcHandler r] -> [RpcHandler r]
forall a. Semigroup a => a -> a -> a
<>
  RpcName -> Execution -> Handler r () -> [RpcHandler r]
forall (r :: [(* -> *) -> * -> *]) h.
(HandlerCodec h r, CommandHandler OptionStateZero h) =>
RpcName -> Execution -> h -> [RpcHandler r]
rpc RpcName
"ProReadConfig" Execution
Async Handler r ()
forall (r :: [(* -> *) -> * -> *]).
Members '[Resumable RpcError Rpc, AtomicState Env] r =>
Handler r ()
proReadConfig
  [RpcHandler r] -> [RpcHandler r] -> [RpcHandler r]
forall a. Semigroup a => a -> a -> a
<>
  RpcName -> Execution -> Handler r () -> [RpcHandler r]
forall (r :: [(* -> *) -> * -> *]) h.
(HandlerCodec h r, CommandHandler OptionStateZero h) =>
RpcName -> Execution -> h -> [RpcHandler r]
rpc RpcName
"ProLoad" Execution
Async Handler r ()
forall (r :: [(* -> *) -> * -> *]).
Members '[AtomicState Env, Resumable RpcError Rpc] r =>
Handler r ()
proLoad
  [RpcHandler r] -> [RpcHandler r] -> [RpcHandler r]
forall a. Semigroup a => a -> a -> a
<>
  RpcName -> Execution -> Handler r () -> [RpcHandler r]
forall (r :: [(* -> *) -> * -> *]) h.
(HandlerCodec h r, CommandHandler OptionStateZero h) =>
RpcName -> Execution -> h -> [RpcHandler r]
rpc RpcName
"ProLoadAfter" Execution
Async Handler r ()
forall (r :: [(* -> *) -> * -> *]).
Members '[AtomicState Env, Resumable RpcError Rpc] r =>
Handler r ()
proLoadAfter
  [RpcHandler r] -> [RpcHandler r] -> [RpcHandler r]
forall a. Semigroup a => a -> a -> a
<>
  [
    RpcName
-> Execution
-> (Text -> Maybe Text -> Maybe Text -> Handler r [GrepOutputLine])
-> RpcHandler r
forall (r :: [(* -> *) -> * -> *]) h.
HandlerCodec h r =>
RpcName -> Execution -> h -> RpcHandler r
rpcFunction RpcName
"ProGrepList" Execution
Sync Text -> Maybe Text -> Maybe Text -> Handler r [GrepOutputLine]
forall (r :: [(* -> *) -> * -> *]).
Members GrepStack r =>
Text -> Maybe Text -> Maybe Text -> Handler r [GrepOutputLine]
proGrepList,
    RpcName
-> Execution -> (AddOptions -> Handler r ()) -> RpcHandler r
forall (r :: [(* -> *) -> * -> *]) h.
HandlerCodec h r =>
RpcName -> Execution -> h -> RpcHandler r
rpcFunction RpcName
"ProAdd" Execution
Async AddOptions -> Handler r ()
forall (r :: [(* -> *) -> * -> *]).
Members
  '[Resumable SettingError Settings, Resumable RpcError Rpc,
    AtomicState Env, Reader PluginName, Log, Embed IO]
  r =>
AddOptions -> Handler r ()
proAdd,
    RpcName
-> Execution -> (Bang -> Text -> Handler r ()) -> RpcHandler r
forall (r :: [(* -> *) -> * -> *]) h.
(HandlerCodec h r, CommandHandler OptionStateZero h) =>
RpcName -> Execution -> h -> RpcHandler r
rpcCommand RpcName
"ProAdd" Execution
Async Bang -> Text -> Handler r ()
forall (r :: [(* -> *) -> * -> *]).
Members
  '[Resumable SettingError Settings, Resumable RpcError Rpc,
    AtomicState Env, Reader PluginName, Log, Embed IO]
  r =>
Bang -> Text -> Handler r ()
proAddCmd,
    RpcName -> Execution -> Handler r () -> RpcHandler r
forall (r :: [(* -> *) -> * -> *]) h.
(HandlerCodec h r, CommandHandler OptionStateZero h) =>
RpcName -> Execution -> h -> RpcHandler r
rpcCommand RpcName
"ProAddMenu" Execution
Async Handler r ()
forall (r :: [(* -> *) -> * -> *]).
Members AddStack r =>
Handler r ()
proAddMenu,
    Text -> RpcHandler r -> RpcHandler r
forall (r :: [(* -> *) -> * -> *]).
Text -> RpcHandler r -> RpcHandler r
completeBuiltin Text
"file" (RpcName
-> Execution -> (Bang -> Text -> Handler r ()) -> RpcHandler r
forall (r :: [(* -> *) -> * -> *]) h.
(HandlerCodec h r, CommandHandler OptionStateZero h) =>
RpcName -> Execution -> h -> RpcHandler r
rpcCommand RpcName
"ProMove" Execution
Async Bang -> Text -> Handler r ()
forall (r :: [(* -> *) -> * -> *]).
Members '[DataLog LogReport, Resumable RpcError Rpc, Embed IO] r =>
Bang -> Text -> Handler r ()
proMove),
    Text -> RpcHandler r -> RpcHandler r
forall (r :: [(* -> *) -> * -> *]).
Text -> RpcHandler r -> RpcHandler r
completeBuiltin Text
"file" (RpcName
-> Execution -> (Bang -> Text -> Handler r ()) -> RpcHandler r
forall (r :: [(* -> *) -> * -> *]) h.
(HandlerCodec h r, CommandHandler OptionStateZero h) =>
RpcName -> Execution -> h -> RpcHandler r
rpcCommand RpcName
"ProCopy" Execution
Async Bang -> Text -> Handler r ()
forall (r :: [(* -> *) -> * -> *]).
Members '[Resumable RpcError Rpc, Embed IO] r =>
Bang -> Text -> Handler r ()
proCopy),
    RpcName -> Execution -> Handler r () -> RpcHandler r
forall (r :: [(* -> *) -> * -> *]) h.
(HandlerCodec h r, CommandHandler OptionStateZero h) =>
RpcName -> Execution -> h -> RpcHandler r
rpcCommand RpcName
"ProRemove" Execution
Async Handler r ()
forall (r :: [(* -> *) -> * -> *]).
Members
  '[Resumable RpcError Rpc, Resumable PersistPathError PersistPath,
    DataLog LogReport, Embed IO]
  r =>
Handler r ()
proRemove,
    RpcName
-> Execution
-> AutocmdEvents
-> AutocmdOptions
-> Handler r ()
-> RpcHandler r
forall (r :: [(* -> *) -> * -> *]) h.
HandlerCodec h r =>
RpcName
-> Execution
-> AutocmdEvents
-> AutocmdOptions
-> h
-> RpcHandler r
rpcAutocmd RpcName
"BufEnter" Execution
Async AutocmdEvents
"BufEnter" AutocmdOptions
forall a. Default a => a
def Handler r ()
forall (r :: [(* -> *) -> * -> *]).
Members
  '[AtomicState Env, Tagged Mru Lock, Resumable RpcError Rpc,
    Resumable SettingError Settings, Resource]
  r =>
Handler r ()
bufEnter,
    RpcName
-> Execution
-> AutocmdEvents
-> AutocmdOptions
-> Handler r ()
-> RpcHandler r
forall (r :: [(* -> *) -> * -> *]) h.
HandlerCodec h r =>
RpcName
-> Execution
-> AutocmdEvents
-> AutocmdOptions
-> h
-> RpcHandler r
rpcAutocmd RpcName
"ProSave" Execution
Async AutocmdEvents
"BufWritePost" AutocmdOptions
forall a. Default a => a
def Handler r ()
forall (r :: [(* -> *) -> * -> *]).
(Member (Resumable PersistError (Persist PersistBuffers)) r,
 Members
   '[Resumable SettingError Settings, AtomicState Env,
     Tagged TagsLock Lock, DataLog LogReport]
   r,
 Members
   '[Tagged StoreBuffersLock Lock, AtomicState Env,
     Resumable RpcError Rpc, Reports, Resource, Log, Async, Embed IO]
   r) =>
Handler r ()
proSave,
    -- If this is Async, Neovim quits before the handler has run
    RpcName
-> Execution
-> AutocmdEvents
-> AutocmdOptions
-> Handler r ()
-> RpcHandler r
forall (r :: [(* -> *) -> * -> *]) h.
HandlerCodec h r =>
RpcName
-> Execution
-> AutocmdEvents
-> AutocmdOptions
-> h
-> RpcHandler r
rpcAutocmd RpcName
"ProQuit" Execution
Sync AutocmdEvents
"VimLeave" AutocmdOptions
forall a. Default a => a
def Handler r ()
forall (r :: [(* -> *) -> * -> *]).
(Member (Resumable PersistError (Persist PersistBuffers)) r,
 Members
   '[Tagged StoreBuffersLock Lock, AtomicState Env,
     Resumable RpcError Rpc, Resource, Embed IO]
   r) =>
Handler r ()
proQuit
  ]

resolveError ::
  Member (DataLog LogReport) r =>
  Sem (Stop ResolveError : r) () ->
  Sem r ()
resolveError :: forall (r :: [(* -> *) -> * -> *]).
Member (DataLog LogReport) r =>
Sem (Stop ResolveError : r) () -> Sem r ()
resolveError Sem (Stop ResolveError : r) ()
sem =
  Sem (Stop ResolveError : r) () -> Sem r (Either ResolveError ())
forall e (r :: [(* -> *) -> * -> *]) a.
Sem (Stop e : r) a -> Sem r (Either e a)
runStop Sem (Stop ResolveError : r) ()
sem Sem r (Either ResolveError ())
-> (Either ResolveError () -> Sem r ()) -> Sem r ()
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= \case
    Left ResolveError
e ->
      ResolveError -> Sem r ()
forall e (r :: [(* -> *) -> * -> *]).
(Reportable e, Member (DataLog LogReport) r) =>
e -> Sem r ()
logReport ResolveError
e
    Right () ->
      Sem r ()
forall (f :: * -> *). Applicative f => f ()
unit

prepare ::
  Members [Persist PersistBuffers !! PersistError, Log, Resource, Embed IO] r =>
  Members [AtomicState Env, Settings !! SettingError, Rpc !! RpcError, Lock @@ LoadBuffersLock, DataLog LogReport] r =>
  Sem r ()
prepare :: forall (r :: [(* -> *) -> * -> *]).
(Members
   '[Resumable PersistError (Persist PersistBuffers), Log, Resource,
     Embed IO]
   r,
 Members
   '[AtomicState Env, Resumable SettingError Settings,
     Resumable RpcError Rpc, Tagged LoadBuffersLock Lock,
     DataLog LogReport]
   r) =>
Sem r ()
prepare = do
  Sem (Stop ResolveError : r) () -> Sem r ()
forall (r :: [(* -> *) -> * -> *]).
Member (DataLog LogReport) r =>
Sem (Stop ResolveError : r) () -> Sem r ()
resolveError (Sem (Stop ResolveError : r) () -> Sem r ())
-> Sem (Stop ResolveError : r) () -> Sem r ()
forall a b. (a -> b) -> a -> b
$ forall (eff :: (* -> *) -> * -> *) e (r :: [(* -> *) -> * -> *]).
(Reportable e, Members '[eff !! e, DataLog LogReport] r) =>
Sem (eff : r) () -> Sem r ()
resumeLogReport @Settings (Sem (Settings : Stop ResolveError : r) ()
 -> Sem (Stop ResolveError : r) ())
-> Sem (Settings : Stop ResolveError : r) ()
-> Sem (Stop ResolveError : r) ()
forall a b. (a -> b) -> a -> b
$ forall (eff :: (* -> *) -> * -> *) e (r :: [(* -> *) -> * -> *]).
(Reportable e, Members '[eff !! e, DataLog LogReport] r) =>
Sem (eff : r) () -> Sem r ()
resumeLogReport @Rpc do
    Sem (Rpc : Settings : Stop ResolveError : r) ()
forall (r :: [(* -> *) -> * -> *]).
Members
  '[AtomicState Env, Resumable SettingError Settings, Settings, Rpc,
    Stop ResolveError, Log, Embed IO]
  r =>
Sem r ()
resolveAndInitMain
  forall (eff :: (* -> *) -> * -> *) e (r :: [(* -> *) -> * -> *]).
(Reportable e, Members '[eff !! e, DataLog LogReport] r) =>
Sem (eff : r) () -> Sem r ()
resumeLogReport @(Persist _) (forall (eff :: (* -> *) -> * -> *) e (r :: [(* -> *) -> * -> *]).
(Reportable e, Members '[eff !! e, DataLog LogReport] r) =>
Sem (eff : r) () -> Sem r ()
resumeLogReport @Rpc Sem (Rpc : Persist PersistBuffers : r) ()
forall (r :: [(* -> *) -> * -> *]).
Members
  '[Persist PersistBuffers, Tagged LoadBuffersLock Lock, Rpc,
    AtomicState Env, Log, Resource]
  r =>
Sem r ()
loadBuffers)
  forall (eff :: (* -> *) -> * -> *) e (r :: [(* -> *) -> * -> *]).
(Reportable e, Members '[eff !! e, DataLog LogReport] r) =>
Sem (eff : r) () -> Sem r ()
resumeLogReport @Rpc Sem (Rpc : r) ()
forall (r :: [(* -> *) -> * -> *]).
Members '[AtomicState Env, Rpc] r =>
Sem r ()
projectConfig
  forall (eff :: (* -> *) -> * -> *) e (r :: [(* -> *) -> * -> *]).
(Reportable e, Members '[eff !! e, DataLog LogReport] r) =>
Sem (eff : r) () -> Sem r ()
resumeLogReport @Rpc Sem (Rpc : r) ()
forall (r :: [(* -> *) -> * -> *]).
Members '[AtomicState Env, Rpc] r =>
Sem r ()
projectConfigAfter

interpretProteomeStack ::
  Members [Race, Resource, Mask Restoration, Embed IO] r =>
  InterpretersFor ProteomeStack r
interpretProteomeStack :: forall (r :: [(* -> *) -> * -> *]).
Members '[Race, Resource, UninterruptibleMaskIO, Embed IO] r =>
InterpretersFor ProteomeStack r
interpretProteomeStack =
  Sem (Lock : r) a -> Sem r a
forall mres (r :: [(* -> *) -> * -> *]).
Members '[Resource, Race, Mask mres, Embed IO] r =>
InterpreterFor Lock r
interpretLockReentrant (Sem (Lock : r) a -> Sem r a)
-> (Sem
      (AtomicState Env
         : AtomicState (Maybe CurrentTag) : Tagged LoadBuffersLock Lock
         : Tagged StoreBuffersLock Lock : Tagged TagsLock Lock
         : Tagged Mru Lock : r)
      a
    -> Sem (Lock : r) a)
-> Sem
     (AtomicState Env
        : AtomicState (Maybe CurrentTag) : Tagged LoadBuffersLock Lock
        : Tagged StoreBuffersLock Lock : Tagged TagsLock Lock
        : Tagged Mru Lock : r)
     a
-> Sem r a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Sem (Tagged Mru Lock : r) a -> Sem (Lock : r) a
forall {k1} (k2 :: k1) (e :: (* -> *) -> * -> *)
       (r :: [(* -> *) -> * -> *]) a.
Sem (Tagged k2 e : r) a -> Sem (e : r) a
untag (Sem (Tagged Mru Lock : r) a -> Sem (Lock : r) a)
-> (Sem
      (AtomicState Env
         : AtomicState (Maybe CurrentTag) : Tagged LoadBuffersLock Lock
         : Tagged StoreBuffersLock Lock : Tagged TagsLock Lock
         : Tagged Mru Lock : r)
      a
    -> Sem (Tagged Mru Lock : r) a)
-> Sem
     (AtomicState Env
        : AtomicState (Maybe CurrentTag) : Tagged LoadBuffersLock Lock
        : Tagged StoreBuffersLock Lock : Tagged TagsLock Lock
        : Tagged Mru Lock : r)
     a
-> Sem (Lock : r) a
forall b c a. (b -> c) -> (a -> b) -> a -> c
.
  Sem (Lock : Tagged Mru Lock : r) a -> Sem (Tagged Mru Lock : r) a
forall mres (r :: [(* -> *) -> * -> *]).
Members '[Resource, Race, Mask mres, Embed IO] r =>
InterpreterFor Lock r
interpretLockReentrant (Sem (Lock : Tagged Mru Lock : r) a -> Sem (Tagged Mru Lock : r) a)
-> (Sem
      (AtomicState Env
         : AtomicState (Maybe CurrentTag) : Tagged LoadBuffersLock Lock
         : Tagged StoreBuffersLock Lock : Tagged TagsLock Lock
         : Tagged Mru Lock : r)
      a
    -> Sem (Lock : Tagged Mru Lock : r) a)
-> Sem
     (AtomicState Env
        : AtomicState (Maybe CurrentTag) : Tagged LoadBuffersLock Lock
        : Tagged StoreBuffersLock Lock : Tagged TagsLock Lock
        : Tagged Mru Lock : r)
     a
-> Sem (Tagged Mru Lock : r) a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Sem (Tagged TagsLock Lock : Tagged Mru Lock : r) a
-> Sem (Lock : Tagged Mru Lock : r) a
forall {k1} (k2 :: k1) (e :: (* -> *) -> * -> *)
       (r :: [(* -> *) -> * -> *]) a.
Sem (Tagged k2 e : r) a -> Sem (e : r) a
untag (Sem (Tagged TagsLock Lock : Tagged Mru Lock : r) a
 -> Sem (Lock : Tagged Mru Lock : r) a)
-> (Sem
      (AtomicState Env
         : AtomicState (Maybe CurrentTag) : Tagged LoadBuffersLock Lock
         : Tagged StoreBuffersLock Lock : Tagged TagsLock Lock
         : Tagged Mru Lock : r)
      a
    -> Sem (Tagged TagsLock Lock : Tagged Mru Lock : r) a)
-> Sem
     (AtomicState Env
        : AtomicState (Maybe CurrentTag) : Tagged LoadBuffersLock Lock
        : Tagged StoreBuffersLock Lock : Tagged TagsLock Lock
        : Tagged Mru Lock : r)
     a
-> Sem (Lock : Tagged Mru Lock : r) a
forall b c a. (b -> c) -> (a -> b) -> a -> c
.
  Sem (Lock : Tagged TagsLock Lock : Tagged Mru Lock : r) a
-> Sem (Tagged TagsLock Lock : Tagged Mru Lock : r) a
forall mres (r :: [(* -> *) -> * -> *]).
Members '[Resource, Race, Mask mres, Embed IO] r =>
InterpreterFor Lock r
interpretLockReentrant (Sem (Lock : Tagged TagsLock Lock : Tagged Mru Lock : r) a
 -> Sem (Tagged TagsLock Lock : Tagged Mru Lock : r) a)
-> (Sem
      (AtomicState Env
         : AtomicState (Maybe CurrentTag) : Tagged LoadBuffersLock Lock
         : Tagged StoreBuffersLock Lock : Tagged TagsLock Lock
         : Tagged Mru Lock : r)
      a
    -> Sem (Lock : Tagged TagsLock Lock : Tagged Mru Lock : r) a)
-> Sem
     (AtomicState Env
        : AtomicState (Maybe CurrentTag) : Tagged LoadBuffersLock Lock
        : Tagged StoreBuffersLock Lock : Tagged TagsLock Lock
        : Tagged Mru Lock : r)
     a
-> Sem (Tagged TagsLock Lock : Tagged Mru Lock : r) a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Sem
  (Tagged StoreBuffersLock Lock
     : Tagged TagsLock Lock : Tagged Mru Lock : r)
  a
-> Sem (Lock : Tagged TagsLock Lock : Tagged Mru Lock : r) a
forall {k1} (k2 :: k1) (e :: (* -> *) -> * -> *)
       (r :: [(* -> *) -> * -> *]) a.
Sem (Tagged k2 e : r) a -> Sem (e : r) a
untag (Sem
   (Tagged StoreBuffersLock Lock
      : Tagged TagsLock Lock : Tagged Mru Lock : r)
   a
 -> Sem (Lock : Tagged TagsLock Lock : Tagged Mru Lock : r) a)
-> (Sem
      (AtomicState Env
         : AtomicState (Maybe CurrentTag) : Tagged LoadBuffersLock Lock
         : Tagged StoreBuffersLock Lock : Tagged TagsLock Lock
         : Tagged Mru Lock : r)
      a
    -> Sem
         (Tagged StoreBuffersLock Lock
            : Tagged TagsLock Lock : Tagged Mru Lock : r)
         a)
-> Sem
     (AtomicState Env
        : AtomicState (Maybe CurrentTag) : Tagged LoadBuffersLock Lock
        : Tagged StoreBuffersLock Lock : Tagged TagsLock Lock
        : Tagged Mru Lock : r)
     a
-> Sem (Lock : Tagged TagsLock Lock : Tagged Mru Lock : r) a
forall b c a. (b -> c) -> (a -> b) -> a -> c
.
  Sem
  (Lock
     : Tagged StoreBuffersLock Lock : Tagged TagsLock Lock
     : Tagged Mru Lock : r)
  a
-> Sem
     (Tagged StoreBuffersLock Lock
        : Tagged TagsLock Lock : Tagged Mru Lock : r)
     a
forall mres (r :: [(* -> *) -> * -> *]).
Members '[Resource, Race, Mask mres, Embed IO] r =>
InterpreterFor Lock r
interpretLockReentrant (Sem
   (Lock
      : Tagged StoreBuffersLock Lock : Tagged TagsLock Lock
      : Tagged Mru Lock : r)
   a
 -> Sem
      (Tagged StoreBuffersLock Lock
         : Tagged TagsLock Lock : Tagged Mru Lock : r)
      a)
-> (Sem
      (AtomicState Env
         : AtomicState (Maybe CurrentTag) : Tagged LoadBuffersLock Lock
         : Tagged StoreBuffersLock Lock : Tagged TagsLock Lock
         : Tagged Mru Lock : r)
      a
    -> Sem
         (Lock
            : Tagged StoreBuffersLock Lock : Tagged TagsLock Lock
            : Tagged Mru Lock : r)
         a)
-> Sem
     (AtomicState Env
        : AtomicState (Maybe CurrentTag) : Tagged LoadBuffersLock Lock
        : Tagged StoreBuffersLock Lock : Tagged TagsLock Lock
        : Tagged Mru Lock : r)
     a
-> Sem
     (Tagged StoreBuffersLock Lock
        : Tagged TagsLock Lock : Tagged Mru Lock : r)
     a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Sem
  (Tagged LoadBuffersLock Lock
     : Tagged StoreBuffersLock Lock : Tagged TagsLock Lock
     : Tagged Mru Lock : r)
  a
-> Sem
     (Lock
        : Tagged StoreBuffersLock Lock : Tagged TagsLock Lock
        : Tagged Mru Lock : r)
     a
forall {k1} (k2 :: k1) (e :: (* -> *) -> * -> *)
       (r :: [(* -> *) -> * -> *]) a.
Sem (Tagged k2 e : r) a -> Sem (e : r) a
untag (Sem
   (Tagged LoadBuffersLock Lock
      : Tagged StoreBuffersLock Lock : Tagged TagsLock Lock
      : Tagged Mru Lock : r)
   a
 -> Sem
      (Lock
         : Tagged StoreBuffersLock Lock : Tagged TagsLock Lock
         : Tagged Mru Lock : r)
      a)
-> (Sem
      (AtomicState Env
         : AtomicState (Maybe CurrentTag) : Tagged LoadBuffersLock Lock
         : Tagged StoreBuffersLock Lock : Tagged TagsLock Lock
         : Tagged Mru Lock : r)
      a
    -> Sem
         (Tagged LoadBuffersLock Lock
            : Tagged StoreBuffersLock Lock : Tagged TagsLock Lock
            : Tagged Mru Lock : r)
         a)
-> Sem
     (AtomicState Env
        : AtomicState (Maybe CurrentTag) : Tagged LoadBuffersLock Lock
        : Tagged StoreBuffersLock Lock : Tagged TagsLock Lock
        : Tagged Mru Lock : r)
     a
-> Sem
     (Lock
        : Tagged StoreBuffersLock Lock : Tagged TagsLock Lock
        : Tagged Mru Lock : r)
     a
forall b c a. (b -> c) -> (a -> b) -> a -> c
.
  Maybe CurrentTag
-> InterpreterFor
     (AtomicState (Maybe CurrentTag))
     (Tagged LoadBuffersLock Lock
        : Tagged StoreBuffersLock Lock : Tagged TagsLock Lock
        : Tagged Mru Lock : r)
forall a (r :: [(* -> *) -> * -> *]).
Member (Embed IO) r =>
a -> InterpreterFor (AtomicState a) r
interpretAtomic Maybe CurrentTag
forall a. Default a => a
def (Sem
   (AtomicState (Maybe CurrentTag)
      : Tagged LoadBuffersLock Lock : Tagged StoreBuffersLock Lock
      : Tagged TagsLock Lock : Tagged Mru Lock : r)
   a
 -> Sem
      (Tagged LoadBuffersLock Lock
         : Tagged StoreBuffersLock Lock : Tagged TagsLock Lock
         : Tagged Mru Lock : r)
      a)
-> (Sem
      (AtomicState Env
         : AtomicState (Maybe CurrentTag) : Tagged LoadBuffersLock Lock
         : Tagged StoreBuffersLock Lock : Tagged TagsLock Lock
         : Tagged Mru Lock : r)
      a
    -> Sem
         (AtomicState (Maybe CurrentTag)
            : Tagged LoadBuffersLock Lock : Tagged StoreBuffersLock Lock
            : Tagged TagsLock Lock : Tagged Mru Lock : r)
         a)
-> Sem
     (AtomicState Env
        : AtomicState (Maybe CurrentTag) : Tagged LoadBuffersLock Lock
        : Tagged StoreBuffersLock Lock : Tagged TagsLock Lock
        : Tagged Mru Lock : r)
     a
-> Sem
     (Tagged LoadBuffersLock Lock
        : Tagged StoreBuffersLock Lock : Tagged TagsLock Lock
        : Tagged Mru Lock : r)
     a
forall b c a. (b -> c) -> (a -> b) -> a -> c
.
  Env
-> InterpreterFor
     (AtomicState Env)
     (AtomicState (Maybe CurrentTag)
        : Tagged LoadBuffersLock Lock : Tagged StoreBuffersLock Lock
        : Tagged TagsLock Lock : Tagged Mru Lock : r)
forall a (r :: [(* -> *) -> * -> *]).
Member (Embed IO) r =>
a -> InterpreterFor (AtomicState a) r
interpretAtomic Env
forall a. Default a => a
def

interpretProteomeProdStack ::
  Member (EventConsumer eres Event) r =>
  Members [Rpc !! RpcError, Settings !! SettingError, Scratch !! RpcError, Reader PluginName, DataLog LogReport] r =>
  Members [Error BootError, Race, Log, Resource, Mask Restoration, Async, Embed IO, Final IO] r =>
  InterpretersFor ProteomeProdStack r
interpretProteomeProdStack :: forall eres (r :: [(* -> *) -> * -> *]).
(Member (EventConsumer eres Event) r,
 Members
   '[Resumable RpcError Rpc, Resumable SettingError Settings,
     Resumable RpcError Scratch, Reader PluginName, DataLog LogReport]
   r,
 Members
   '[Error BootError, Race, Log, Resource, UninterruptibleMaskIO,
     Async, Embed IO, Final IO]
   r) =>
InterpretersFor ProteomeProdStack r
interpretProteomeProdStack =
  Sem
  (AtomicState Env
     : AtomicState (Maybe CurrentTag) : Tagged LoadBuffersLock Lock
     : Tagged StoreBuffersLock Lock : Tagged TagsLock Lock
     : Tagged Mru Lock : r)
  a
-> Sem r a
forall (r :: [(* -> *) -> * -> *]).
Members '[Race, Resource, UninterruptibleMaskIO, Embed IO] r =>
InterpretersFor ProteomeStack r
interpretProteomeStack (Sem
   (AtomicState Env
      : AtomicState (Maybe CurrentTag) : Tagged LoadBuffersLock Lock
      : Tagged StoreBuffersLock Lock : Tagged TagsLock Lock
      : Tagged Mru Lock : r)
   a
 -> Sem r a)
-> (Sem
      (Resumable PersistError (Persist PersistBuffers)
         : Resumable PersistPathError PersistPath
         : Resumable RpcError (ModalWindowMenus () AddItem)
         : Resumable RpcError (ModalWindowMenus () ListedBuffer)
         : Resumable RpcError (ModalWindowMenus () GrepOutputLine)
         : Resumable RpcError (WindowMenus () FilesState)
         : Resumable RpcError (WindowMenus () TagsState)
         : Resumable
             RpcError (Scoped WindowConfig WindowMenu (MenuUi !! RpcError))
         : MenuFilter (FilterMode Filter) : MenuStream : Reader MenuConfig
         : Scoped Prompt () (MState Prompt)
         : Events (OutChan MenuEvent) MenuEvent
         : Scoped () (EventChan MenuEvent) (Consume MenuEvent)
         : Scoped () (MVar ()) Gate : AtomicState Env
         : AtomicState (Maybe CurrentTag) : Tagged LoadBuffersLock Lock
         : Tagged StoreBuffersLock Lock : Tagged TagsLock Lock
         : Tagged Mru Lock : r)
      a
    -> Sem
         (AtomicState Env
            : AtomicState (Maybe CurrentTag) : Tagged LoadBuffersLock Lock
            : Tagged StoreBuffersLock Lock : Tagged TagsLock Lock
            : Tagged Mru Lock : r)
         a)
-> Sem
     (Resumable PersistError (Persist PersistBuffers)
        : Resumable PersistPathError PersistPath
        : Resumable RpcError (ModalWindowMenus () AddItem)
        : Resumable RpcError (ModalWindowMenus () ListedBuffer)
        : Resumable RpcError (ModalWindowMenus () GrepOutputLine)
        : Resumable RpcError (WindowMenus () FilesState)
        : Resumable RpcError (WindowMenus () TagsState)
        : Resumable
            RpcError (Scoped WindowConfig WindowMenu (MenuUi !! RpcError))
        : MenuFilter (FilterMode Filter) : MenuStream : Reader MenuConfig
        : Scoped Prompt () (MState Prompt)
        : Events (OutChan MenuEvent) MenuEvent
        : Scoped () (EventChan MenuEvent) (Consume MenuEvent)
        : Scoped () (MVar ()) Gate : AtomicState Env
        : AtomicState (Maybe CurrentTag) : Tagged LoadBuffersLock Lock
        : Tagged StoreBuffersLock Lock : Tagged TagsLock Lock
        : Tagged Mru Lock : r)
     a
-> Sem r a
forall b c a. (b -> c) -> (a -> b) -> a -> c
.
  Sem
  (Resumable
     RpcError (Scoped WindowConfig WindowMenu (MenuUi !! RpcError))
     : MenuFilter (FilterMode Filter) : MenuStream : Reader MenuConfig
     : Scoped Prompt () (MState Prompt)
     : Events (OutChan MenuEvent) MenuEvent
     : Scoped () (EventChan MenuEvent) (Consume MenuEvent)
     : Scoped () (MVar ()) Gate : AtomicState Env
     : AtomicState (Maybe CurrentTag) : Tagged LoadBuffersLock Lock
     : Tagged StoreBuffersLock Lock : Tagged TagsLock Lock
     : Tagged Mru Lock : r)
  a
-> Sem
     (AtomicState Env
        : AtomicState (Maybe CurrentTag) : Tagged LoadBuffersLock Lock
        : Tagged StoreBuffersLock Lock : Tagged TagsLock Lock
        : Tagged Mru Lock : r)
     a
forall (r :: [(* -> *) -> * -> *]) eres.
(Members MenuLoopIO r,
 Members
   '[Resumable SettingError Settings, Resumable RpcError Rpc,
     Resumable RpcError Scratch, EventConsumer eres Event, Final IO]
   r) =>
InterpretersFor NvimMenus r
interpretWindowMenu (Sem
   (Resumable
      RpcError (Scoped WindowConfig WindowMenu (MenuUi !! RpcError))
      : MenuFilter (FilterMode Filter) : MenuStream : Reader MenuConfig
      : Scoped Prompt () (MState Prompt)
      : Events (OutChan MenuEvent) MenuEvent
      : Scoped () (EventChan MenuEvent) (Consume MenuEvent)
      : Scoped () (MVar ()) Gate : AtomicState Env
      : AtomicState (Maybe CurrentTag) : Tagged LoadBuffersLock Lock
      : Tagged StoreBuffersLock Lock : Tagged TagsLock Lock
      : Tagged Mru Lock : r)
   a
 -> Sem
      (AtomicState Env
         : AtomicState (Maybe CurrentTag) : Tagged LoadBuffersLock Lock
         : Tagged StoreBuffersLock Lock : Tagged TagsLock Lock
         : Tagged Mru Lock : r)
      a)
-> (Sem
      (Resumable PersistError (Persist PersistBuffers)
         : Resumable PersistPathError PersistPath
         : Resumable RpcError (ModalWindowMenus () AddItem)
         : Resumable RpcError (ModalWindowMenus () ListedBuffer)
         : Resumable RpcError (ModalWindowMenus () GrepOutputLine)
         : Resumable RpcError (WindowMenus () FilesState)
         : Resumable RpcError (WindowMenus () TagsState)
         : Resumable
             RpcError (Scoped WindowConfig WindowMenu (MenuUi !! RpcError))
         : MenuFilter (FilterMode Filter) : MenuStream : Reader MenuConfig
         : Scoped Prompt () (MState Prompt)
         : Events (OutChan MenuEvent) MenuEvent
         : Scoped () (EventChan MenuEvent) (Consume MenuEvent)
         : Scoped () (MVar ()) Gate : AtomicState Env
         : AtomicState (Maybe CurrentTag) : Tagged LoadBuffersLock Lock
         : Tagged StoreBuffersLock Lock : Tagged TagsLock Lock
         : Tagged Mru Lock : r)
      a
    -> Sem
         (Resumable
            RpcError (Scoped WindowConfig WindowMenu (MenuUi !! RpcError))
            : MenuFilter (FilterMode Filter) : MenuStream : Reader MenuConfig
            : Scoped Prompt () (MState Prompt)
            : Events (OutChan MenuEvent) MenuEvent
            : Scoped () (EventChan MenuEvent) (Consume MenuEvent)
            : Scoped () (MVar ()) Gate : AtomicState Env
            : AtomicState (Maybe CurrentTag) : Tagged LoadBuffersLock Lock
            : Tagged StoreBuffersLock Lock : Tagged TagsLock Lock
            : Tagged Mru Lock : r)
         a)
-> Sem
     (Resumable PersistError (Persist PersistBuffers)
        : Resumable PersistPathError PersistPath
        : Resumable RpcError (ModalWindowMenus () AddItem)
        : Resumable RpcError (ModalWindowMenus () ListedBuffer)
        : Resumable RpcError (ModalWindowMenus () GrepOutputLine)
        : Resumable RpcError (WindowMenus () FilesState)
        : Resumable RpcError (WindowMenus () TagsState)
        : Resumable
            RpcError (Scoped WindowConfig WindowMenu (MenuUi !! RpcError))
        : MenuFilter (FilterMode Filter) : MenuStream : Reader MenuConfig
        : Scoped Prompt () (MState Prompt)
        : Events (OutChan MenuEvent) MenuEvent
        : Scoped () (EventChan MenuEvent) (Consume MenuEvent)
        : Scoped () (MVar ()) Gate : AtomicState Env
        : AtomicState (Maybe CurrentTag) : Tagged LoadBuffersLock Lock
        : Tagged StoreBuffersLock Lock : Tagged TagsLock Lock
        : Tagged Mru Lock : r)
     a
-> Sem
     (AtomicState Env
        : AtomicState (Maybe CurrentTag) : Tagged LoadBuffersLock Lock
        : Tagged StoreBuffersLock Lock : Tagged TagsLock Lock
        : Tagged Mru Lock : r)
     a
forall b c a. (b -> c) -> (a -> b) -> a -> c
.
  Sem
  (Resumable RpcError (WindowMenus () TagsState)
     : Resumable
         RpcError (Scoped WindowConfig WindowMenu (MenuUi !! RpcError))
     : MenuFilter (FilterMode Filter) : MenuStream : Reader MenuConfig
     : Scoped Prompt () (MState Prompt)
     : Events (OutChan MenuEvent) MenuEvent
     : Scoped () (EventChan MenuEvent) (Consume MenuEvent)
     : Scoped () (MVar ()) Gate : AtomicState Env
     : AtomicState (Maybe CurrentTag) : Tagged LoadBuffersLock Lock
     : Tagged StoreBuffersLock Lock : Tagged TagsLock Lock
     : Tagged Mru Lock : r)
  a
-> Sem
     (Resumable
        RpcError (Scoped WindowConfig WindowMenu (MenuUi !! RpcError))
        : MenuFilter (FilterMode Filter) : MenuStream : Reader MenuConfig
        : Scoped Prompt () (MState Prompt)
        : Events (OutChan MenuEvent) MenuEvent
        : Scoped () (EventChan MenuEvent) (Consume MenuEvent)
        : Scoped () (MVar ()) Gate : AtomicState Env
        : AtomicState (Maybe CurrentTag) : Tagged LoadBuffersLock Lock
        : Tagged StoreBuffersLock Lock : Tagged TagsLock Lock
        : Tagged Mru Lock : r)
     a
forall res ui s (r :: [(* -> *) -> * -> *]).
(MenuState s, Members MenuLoopIO r, Members MenuLoopDeps r,
 Members '[ScopedMenuUi ui res, MenuFilter (Filter s)] r) =>
InterpreterFor (UiMenus ui () s !! RpcError) r
interpretMenus (Sem
   (Resumable RpcError (WindowMenus () TagsState)
      : Resumable
          RpcError (Scoped WindowConfig WindowMenu (MenuUi !! RpcError))
      : MenuFilter (FilterMode Filter) : MenuStream : Reader MenuConfig
      : Scoped Prompt () (MState Prompt)
      : Events (OutChan MenuEvent) MenuEvent
      : Scoped () (EventChan MenuEvent) (Consume MenuEvent)
      : Scoped () (MVar ()) Gate : AtomicState Env
      : AtomicState (Maybe CurrentTag) : Tagged LoadBuffersLock Lock
      : Tagged StoreBuffersLock Lock : Tagged TagsLock Lock
      : Tagged Mru Lock : r)
   a
 -> Sem
      (Resumable
         RpcError (Scoped WindowConfig WindowMenu (MenuUi !! RpcError))
         : MenuFilter (FilterMode Filter) : MenuStream : Reader MenuConfig
         : Scoped Prompt () (MState Prompt)
         : Events (OutChan MenuEvent) MenuEvent
         : Scoped () (EventChan MenuEvent) (Consume MenuEvent)
         : Scoped () (MVar ()) Gate : AtomicState Env
         : AtomicState (Maybe CurrentTag) : Tagged LoadBuffersLock Lock
         : Tagged StoreBuffersLock Lock : Tagged TagsLock Lock
         : Tagged Mru Lock : r)
      a)
-> (Sem
      (Resumable PersistError (Persist PersistBuffers)
         : Resumable PersistPathError PersistPath
         : Resumable RpcError (ModalWindowMenus () AddItem)
         : Resumable RpcError (ModalWindowMenus () ListedBuffer)
         : Resumable RpcError (ModalWindowMenus () GrepOutputLine)
         : Resumable RpcError (WindowMenus () FilesState)
         : Resumable RpcError (WindowMenus () TagsState)
         : Resumable
             RpcError (Scoped WindowConfig WindowMenu (MenuUi !! RpcError))
         : MenuFilter (FilterMode Filter) : MenuStream : Reader MenuConfig
         : Scoped Prompt () (MState Prompt)
         : Events (OutChan MenuEvent) MenuEvent
         : Scoped () (EventChan MenuEvent) (Consume MenuEvent)
         : Scoped () (MVar ()) Gate : AtomicState Env
         : AtomicState (Maybe CurrentTag) : Tagged LoadBuffersLock Lock
         : Tagged StoreBuffersLock Lock : Tagged TagsLock Lock
         : Tagged Mru Lock : r)
      a
    -> Sem
         (Resumable RpcError (WindowMenus () TagsState)
            : Resumable
                RpcError (Scoped WindowConfig WindowMenu (MenuUi !! RpcError))
            : MenuFilter (FilterMode Filter) : MenuStream : Reader MenuConfig
            : Scoped Prompt () (MState Prompt)
            : Events (OutChan MenuEvent) MenuEvent
            : Scoped () (EventChan MenuEvent) (Consume MenuEvent)
            : Scoped () (MVar ()) Gate : AtomicState Env
            : AtomicState (Maybe CurrentTag) : Tagged LoadBuffersLock Lock
            : Tagged StoreBuffersLock Lock : Tagged TagsLock Lock
            : Tagged Mru Lock : r)
         a)
-> Sem
     (Resumable PersistError (Persist PersistBuffers)
        : Resumable PersistPathError PersistPath
        : Resumable RpcError (ModalWindowMenus () AddItem)
        : Resumable RpcError (ModalWindowMenus () ListedBuffer)
        : Resumable RpcError (ModalWindowMenus () GrepOutputLine)
        : Resumable RpcError (WindowMenus () FilesState)
        : Resumable RpcError (WindowMenus () TagsState)
        : Resumable
            RpcError (Scoped WindowConfig WindowMenu (MenuUi !! RpcError))
        : MenuFilter (FilterMode Filter) : MenuStream : Reader MenuConfig
        : Scoped Prompt () (MState Prompt)
        : Events (OutChan MenuEvent) MenuEvent
        : Scoped () (EventChan MenuEvent) (Consume MenuEvent)
        : Scoped () (MVar ()) Gate : AtomicState Env
        : AtomicState (Maybe CurrentTag) : Tagged LoadBuffersLock Lock
        : Tagged StoreBuffersLock Lock : Tagged TagsLock Lock
        : Tagged Mru Lock : r)
     a
-> Sem
     (Resumable
        RpcError (Scoped WindowConfig WindowMenu (MenuUi !! RpcError))
        : MenuFilter (FilterMode Filter) : MenuStream : Reader MenuConfig
        : Scoped Prompt () (MState Prompt)
        : Events (OutChan MenuEvent) MenuEvent
        : Scoped () (EventChan MenuEvent) (Consume MenuEvent)
        : Scoped () (MVar ()) Gate : AtomicState Env
        : AtomicState (Maybe CurrentTag) : Tagged LoadBuffersLock Lock
        : Tagged StoreBuffersLock Lock : Tagged TagsLock Lock
        : Tagged Mru Lock : r)
     a
forall b c a. (b -> c) -> (a -> b) -> a -> c
.
  Sem
  (Resumable RpcError (WindowMenus () FilesState)
     : Resumable RpcError (WindowMenus () TagsState)
     : Resumable
         RpcError (Scoped WindowConfig WindowMenu (MenuUi !! RpcError))
     : MenuFilter (FilterMode Filter) : MenuStream : Reader MenuConfig
     : Scoped Prompt () (MState Prompt)
     : Events (OutChan MenuEvent) MenuEvent
     : Scoped () (EventChan MenuEvent) (Consume MenuEvent)
     : Scoped () (MVar ()) Gate : AtomicState Env
     : AtomicState (Maybe CurrentTag) : Tagged LoadBuffersLock Lock
     : Tagged StoreBuffersLock Lock : Tagged TagsLock Lock
     : Tagged Mru Lock : r)
  a
-> Sem
     (Resumable RpcError (WindowMenus () TagsState)
        : Resumable
            RpcError (Scoped WindowConfig WindowMenu (MenuUi !! RpcError))
        : MenuFilter (FilterMode Filter) : MenuStream : Reader MenuConfig
        : Scoped Prompt () (MState Prompt)
        : Events (OutChan MenuEvent) MenuEvent
        : Scoped () (EventChan MenuEvent) (Consume MenuEvent)
        : Scoped () (MVar ()) Gate : AtomicState Env
        : AtomicState (Maybe CurrentTag) : Tagged LoadBuffersLock Lock
        : Tagged StoreBuffersLock Lock : Tagged TagsLock Lock
        : Tagged Mru Lock : r)
     a
forall res ui s (r :: [(* -> *) -> * -> *]).
(MenuState s, Members MenuLoopIO r, Members MenuLoopDeps r,
 Members '[ScopedMenuUi ui res, MenuFilter (Filter s)] r) =>
InterpreterFor (UiMenus ui () s !! RpcError) r
interpretMenus (Sem
   (Resumable RpcError (WindowMenus () FilesState)
      : Resumable RpcError (WindowMenus () TagsState)
      : Resumable
          RpcError (Scoped WindowConfig WindowMenu (MenuUi !! RpcError))
      : MenuFilter (FilterMode Filter) : MenuStream : Reader MenuConfig
      : Scoped Prompt () (MState Prompt)
      : Events (OutChan MenuEvent) MenuEvent
      : Scoped () (EventChan MenuEvent) (Consume MenuEvent)
      : Scoped () (MVar ()) Gate : AtomicState Env
      : AtomicState (Maybe CurrentTag) : Tagged LoadBuffersLock Lock
      : Tagged StoreBuffersLock Lock : Tagged TagsLock Lock
      : Tagged Mru Lock : r)
   a
 -> Sem
      (Resumable RpcError (WindowMenus () TagsState)
         : Resumable
             RpcError (Scoped WindowConfig WindowMenu (MenuUi !! RpcError))
         : MenuFilter (FilterMode Filter) : MenuStream : Reader MenuConfig
         : Scoped Prompt () (MState Prompt)
         : Events (OutChan MenuEvent) MenuEvent
         : Scoped () (EventChan MenuEvent) (Consume MenuEvent)
         : Scoped () (MVar ()) Gate : AtomicState Env
         : AtomicState (Maybe CurrentTag) : Tagged LoadBuffersLock Lock
         : Tagged StoreBuffersLock Lock : Tagged TagsLock Lock
         : Tagged Mru Lock : r)
      a)
-> (Sem
      (Resumable PersistError (Persist PersistBuffers)
         : Resumable PersistPathError PersistPath
         : Resumable RpcError (ModalWindowMenus () AddItem)
         : Resumable RpcError (ModalWindowMenus () ListedBuffer)
         : Resumable RpcError (ModalWindowMenus () GrepOutputLine)
         : Resumable RpcError (WindowMenus () FilesState)
         : Resumable RpcError (WindowMenus () TagsState)
         : Resumable
             RpcError (Scoped WindowConfig WindowMenu (MenuUi !! RpcError))
         : MenuFilter (FilterMode Filter) : MenuStream : Reader MenuConfig
         : Scoped Prompt () (MState Prompt)
         : Events (OutChan MenuEvent) MenuEvent
         : Scoped () (EventChan MenuEvent) (Consume MenuEvent)
         : Scoped () (MVar ()) Gate : AtomicState Env
         : AtomicState (Maybe CurrentTag) : Tagged LoadBuffersLock Lock
         : Tagged StoreBuffersLock Lock : Tagged TagsLock Lock
         : Tagged Mru Lock : r)
      a
    -> Sem
         (Resumable RpcError (WindowMenus () FilesState)
            : Resumable RpcError (WindowMenus () TagsState)
            : Resumable
                RpcError (Scoped WindowConfig WindowMenu (MenuUi !! RpcError))
            : MenuFilter (FilterMode Filter) : MenuStream : Reader MenuConfig
            : Scoped Prompt () (MState Prompt)
            : Events (OutChan MenuEvent) MenuEvent
            : Scoped () (EventChan MenuEvent) (Consume MenuEvent)
            : Scoped () (MVar ()) Gate : AtomicState Env
            : AtomicState (Maybe CurrentTag) : Tagged LoadBuffersLock Lock
            : Tagged StoreBuffersLock Lock : Tagged TagsLock Lock
            : Tagged Mru Lock : r)
         a)
-> Sem
     (Resumable PersistError (Persist PersistBuffers)
        : Resumable PersistPathError PersistPath
        : Resumable RpcError (ModalWindowMenus () AddItem)
        : Resumable RpcError (ModalWindowMenus () ListedBuffer)
        : Resumable RpcError (ModalWindowMenus () GrepOutputLine)
        : Resumable RpcError (WindowMenus () FilesState)
        : Resumable RpcError (WindowMenus () TagsState)
        : Resumable
            RpcError (Scoped WindowConfig WindowMenu (MenuUi !! RpcError))
        : MenuFilter (FilterMode Filter) : MenuStream : Reader MenuConfig
        : Scoped Prompt () (MState Prompt)
        : Events (OutChan MenuEvent) MenuEvent
        : Scoped () (EventChan MenuEvent) (Consume MenuEvent)
        : Scoped () (MVar ()) Gate : AtomicState Env
        : AtomicState (Maybe CurrentTag) : Tagged LoadBuffersLock Lock
        : Tagged StoreBuffersLock Lock : Tagged TagsLock Lock
        : Tagged Mru Lock : r)
     a
-> Sem
     (Resumable RpcError (WindowMenus () TagsState)
        : Resumable
            RpcError (Scoped WindowConfig WindowMenu (MenuUi !! RpcError))
        : MenuFilter (FilterMode Filter) : MenuStream : Reader MenuConfig
        : Scoped Prompt () (MState Prompt)
        : Events (OutChan MenuEvent) MenuEvent
        : Scoped () (EventChan MenuEvent) (Consume MenuEvent)
        : Scoped () (MVar ()) Gate : AtomicState Env
        : AtomicState (Maybe CurrentTag) : Tagged LoadBuffersLock Lock
        : Tagged StoreBuffersLock Lock : Tagged TagsLock Lock
        : Tagged Mru Lock : r)
     a
forall b c a. (b -> c) -> (a -> b) -> a -> c
.
  Sem
  (Resumable RpcError (ModalWindowMenus () GrepOutputLine)
     : Resumable RpcError (WindowMenus () FilesState)
     : Resumable RpcError (WindowMenus () TagsState)
     : Resumable
         RpcError (Scoped WindowConfig WindowMenu (MenuUi !! RpcError))
     : MenuFilter (FilterMode Filter) : MenuStream : Reader MenuConfig
     : Scoped Prompt () (MState Prompt)
     : Events (OutChan MenuEvent) MenuEvent
     : Scoped () (EventChan MenuEvent) (Consume MenuEvent)
     : Scoped () (MVar ()) Gate : AtomicState Env
     : AtomicState (Maybe CurrentTag) : Tagged LoadBuffersLock Lock
     : Tagged StoreBuffersLock Lock : Tagged TagsLock Lock
     : Tagged Mru Lock : r)
  a
-> Sem
     (Resumable RpcError (WindowMenus () FilesState)
        : Resumable RpcError (WindowMenus () TagsState)
        : Resumable
            RpcError (Scoped WindowConfig WindowMenu (MenuUi !! RpcError))
        : MenuFilter (FilterMode Filter) : MenuStream : Reader MenuConfig
        : Scoped Prompt () (MState Prompt)
        : Events (OutChan MenuEvent) MenuEvent
        : Scoped () (EventChan MenuEvent) (Consume MenuEvent)
        : Scoped () (MVar ()) Gate : AtomicState Env
        : AtomicState (Maybe CurrentTag) : Tagged LoadBuffersLock Lock
        : Tagged StoreBuffersLock Lock : Tagged TagsLock Lock
        : Tagged Mru Lock : r)
     a
forall res ui s (r :: [(* -> *) -> * -> *]).
(MenuState s, Members MenuLoopIO r, Members MenuLoopDeps r,
 Members '[ScopedMenuUi ui res, MenuFilter (Filter s)] r) =>
InterpreterFor (UiMenus ui () s !! RpcError) r
interpretMenus (Sem
   (Resumable RpcError (ModalWindowMenus () GrepOutputLine)
      : Resumable RpcError (WindowMenus () FilesState)
      : Resumable RpcError (WindowMenus () TagsState)
      : Resumable
          RpcError (Scoped WindowConfig WindowMenu (MenuUi !! RpcError))
      : MenuFilter (FilterMode Filter) : MenuStream : Reader MenuConfig
      : Scoped Prompt () (MState Prompt)
      : Events (OutChan MenuEvent) MenuEvent
      : Scoped () (EventChan MenuEvent) (Consume MenuEvent)
      : Scoped () (MVar ()) Gate : AtomicState Env
      : AtomicState (Maybe CurrentTag) : Tagged LoadBuffersLock Lock
      : Tagged StoreBuffersLock Lock : Tagged TagsLock Lock
      : Tagged Mru Lock : r)
   a
 -> Sem
      (Resumable RpcError (WindowMenus () FilesState)
         : Resumable RpcError (WindowMenus () TagsState)
         : Resumable
             RpcError (Scoped WindowConfig WindowMenu (MenuUi !! RpcError))
         : MenuFilter (FilterMode Filter) : MenuStream : Reader MenuConfig
         : Scoped Prompt () (MState Prompt)
         : Events (OutChan MenuEvent) MenuEvent
         : Scoped () (EventChan MenuEvent) (Consume MenuEvent)
         : Scoped () (MVar ()) Gate : AtomicState Env
         : AtomicState (Maybe CurrentTag) : Tagged LoadBuffersLock Lock
         : Tagged StoreBuffersLock Lock : Tagged TagsLock Lock
         : Tagged Mru Lock : r)
      a)
-> (Sem
      (Resumable PersistError (Persist PersistBuffers)
         : Resumable PersistPathError PersistPath
         : Resumable RpcError (ModalWindowMenus () AddItem)
         : Resumable RpcError (ModalWindowMenus () ListedBuffer)
         : Resumable RpcError (ModalWindowMenus () GrepOutputLine)
         : Resumable RpcError (WindowMenus () FilesState)
         : Resumable RpcError (WindowMenus () TagsState)
         : Resumable
             RpcError (Scoped WindowConfig WindowMenu (MenuUi !! RpcError))
         : MenuFilter (FilterMode Filter) : MenuStream : Reader MenuConfig
         : Scoped Prompt () (MState Prompt)
         : Events (OutChan MenuEvent) MenuEvent
         : Scoped () (EventChan MenuEvent) (Consume MenuEvent)
         : Scoped () (MVar ()) Gate : AtomicState Env
         : AtomicState (Maybe CurrentTag) : Tagged LoadBuffersLock Lock
         : Tagged StoreBuffersLock Lock : Tagged TagsLock Lock
         : Tagged Mru Lock : r)
      a
    -> Sem
         (Resumable RpcError (ModalWindowMenus () GrepOutputLine)
            : Resumable RpcError (WindowMenus () FilesState)
            : Resumable RpcError (WindowMenus () TagsState)
            : Resumable
                RpcError (Scoped WindowConfig WindowMenu (MenuUi !! RpcError))
            : MenuFilter (FilterMode Filter) : MenuStream : Reader MenuConfig
            : Scoped Prompt () (MState Prompt)
            : Events (OutChan MenuEvent) MenuEvent
            : Scoped () (EventChan MenuEvent) (Consume MenuEvent)
            : Scoped () (MVar ()) Gate : AtomicState Env
            : AtomicState (Maybe CurrentTag) : Tagged LoadBuffersLock Lock
            : Tagged StoreBuffersLock Lock : Tagged TagsLock Lock
            : Tagged Mru Lock : r)
         a)
-> Sem
     (Resumable PersistError (Persist PersistBuffers)
        : Resumable PersistPathError PersistPath
        : Resumable RpcError (ModalWindowMenus () AddItem)
        : Resumable RpcError (ModalWindowMenus () ListedBuffer)
        : Resumable RpcError (ModalWindowMenus () GrepOutputLine)
        : Resumable RpcError (WindowMenus () FilesState)
        : Resumable RpcError (WindowMenus () TagsState)
        : Resumable
            RpcError (Scoped WindowConfig WindowMenu (MenuUi !! RpcError))
        : MenuFilter (FilterMode Filter) : MenuStream : Reader MenuConfig
        : Scoped Prompt () (MState Prompt)
        : Events (OutChan MenuEvent) MenuEvent
        : Scoped () (EventChan MenuEvent) (Consume MenuEvent)
        : Scoped () (MVar ()) Gate : AtomicState Env
        : AtomicState (Maybe CurrentTag) : Tagged LoadBuffersLock Lock
        : Tagged StoreBuffersLock Lock : Tagged TagsLock Lock
        : Tagged Mru Lock : r)
     a
-> Sem
     (Resumable RpcError (WindowMenus () FilesState)
        : Resumable RpcError (WindowMenus () TagsState)
        : Resumable
            RpcError (Scoped WindowConfig WindowMenu (MenuUi !! RpcError))
        : MenuFilter (FilterMode Filter) : MenuStream : Reader MenuConfig
        : Scoped Prompt () (MState Prompt)
        : Events (OutChan MenuEvent) MenuEvent
        : Scoped () (EventChan MenuEvent) (Consume MenuEvent)
        : Scoped () (MVar ()) Gate : AtomicState Env
        : AtomicState (Maybe CurrentTag) : Tagged LoadBuffersLock Lock
        : Tagged StoreBuffersLock Lock : Tagged TagsLock Lock
        : Tagged Mru Lock : r)
     a
forall b c a. (b -> c) -> (a -> b) -> a -> c
.
  Sem
  (Resumable RpcError (ModalWindowMenus () ListedBuffer)
     : Resumable RpcError (ModalWindowMenus () GrepOutputLine)
     : Resumable RpcError (WindowMenus () FilesState)
     : Resumable RpcError (WindowMenus () TagsState)
     : Resumable
         RpcError (Scoped WindowConfig WindowMenu (MenuUi !! RpcError))
     : MenuFilter (FilterMode Filter) : MenuStream : Reader MenuConfig
     : Scoped Prompt () (MState Prompt)
     : Events (OutChan MenuEvent) MenuEvent
     : Scoped () (EventChan MenuEvent) (Consume MenuEvent)
     : Scoped () (MVar ()) Gate : AtomicState Env
     : AtomicState (Maybe CurrentTag) : Tagged LoadBuffersLock Lock
     : Tagged StoreBuffersLock Lock : Tagged TagsLock Lock
     : Tagged Mru Lock : r)
  a
-> Sem
     (Resumable RpcError (ModalWindowMenus () GrepOutputLine)
        : Resumable RpcError (WindowMenus () FilesState)
        : Resumable RpcError (WindowMenus () TagsState)
        : Resumable
            RpcError (Scoped WindowConfig WindowMenu (MenuUi !! RpcError))
        : MenuFilter (FilterMode Filter) : MenuStream : Reader MenuConfig
        : Scoped Prompt () (MState Prompt)
        : Events (OutChan MenuEvent) MenuEvent
        : Scoped () (EventChan MenuEvent) (Consume MenuEvent)
        : Scoped () (MVar ()) Gate : AtomicState Env
        : AtomicState (Maybe CurrentTag) : Tagged LoadBuffersLock Lock
        : Tagged StoreBuffersLock Lock : Tagged TagsLock Lock
        : Tagged Mru Lock : r)
     a
forall res ui s (r :: [(* -> *) -> * -> *]).
(MenuState s, Members MenuLoopIO r, Members MenuLoopDeps r,
 Members '[ScopedMenuUi ui res, MenuFilter (Filter s)] r) =>
InterpreterFor (UiMenus ui () s !! RpcError) r
interpretMenus (Sem
   (Resumable RpcError (ModalWindowMenus () ListedBuffer)
      : Resumable RpcError (ModalWindowMenus () GrepOutputLine)
      : Resumable RpcError (WindowMenus () FilesState)
      : Resumable RpcError (WindowMenus () TagsState)
      : Resumable
          RpcError (Scoped WindowConfig WindowMenu (MenuUi !! RpcError))
      : MenuFilter (FilterMode Filter) : MenuStream : Reader MenuConfig
      : Scoped Prompt () (MState Prompt)
      : Events (OutChan MenuEvent) MenuEvent
      : Scoped () (EventChan MenuEvent) (Consume MenuEvent)
      : Scoped () (MVar ()) Gate : AtomicState Env
      : AtomicState (Maybe CurrentTag) : Tagged LoadBuffersLock Lock
      : Tagged StoreBuffersLock Lock : Tagged TagsLock Lock
      : Tagged Mru Lock : r)
   a
 -> Sem
      (Resumable RpcError (ModalWindowMenus () GrepOutputLine)
         : Resumable RpcError (WindowMenus () FilesState)
         : Resumable RpcError (WindowMenus () TagsState)
         : Resumable
             RpcError (Scoped WindowConfig WindowMenu (MenuUi !! RpcError))
         : MenuFilter (FilterMode Filter) : MenuStream : Reader MenuConfig
         : Scoped Prompt () (MState Prompt)
         : Events (OutChan MenuEvent) MenuEvent
         : Scoped () (EventChan MenuEvent) (Consume MenuEvent)
         : Scoped () (MVar ()) Gate : AtomicState Env
         : AtomicState (Maybe CurrentTag) : Tagged LoadBuffersLock Lock
         : Tagged StoreBuffersLock Lock : Tagged TagsLock Lock
         : Tagged Mru Lock : r)
      a)
-> (Sem
      (Resumable PersistError (Persist PersistBuffers)
         : Resumable PersistPathError PersistPath
         : Resumable RpcError (ModalWindowMenus () AddItem)
         : Resumable RpcError (ModalWindowMenus () ListedBuffer)
         : Resumable RpcError (ModalWindowMenus () GrepOutputLine)
         : Resumable RpcError (WindowMenus () FilesState)
         : Resumable RpcError (WindowMenus () TagsState)
         : Resumable
             RpcError (Scoped WindowConfig WindowMenu (MenuUi !! RpcError))
         : MenuFilter (FilterMode Filter) : MenuStream : Reader MenuConfig
         : Scoped Prompt () (MState Prompt)
         : Events (OutChan MenuEvent) MenuEvent
         : Scoped () (EventChan MenuEvent) (Consume MenuEvent)
         : Scoped () (MVar ()) Gate : AtomicState Env
         : AtomicState (Maybe CurrentTag) : Tagged LoadBuffersLock Lock
         : Tagged StoreBuffersLock Lock : Tagged TagsLock Lock
         : Tagged Mru Lock : r)
      a
    -> Sem
         (Resumable RpcError (ModalWindowMenus () ListedBuffer)
            : Resumable RpcError (ModalWindowMenus () GrepOutputLine)
            : Resumable RpcError (WindowMenus () FilesState)
            : Resumable RpcError (WindowMenus () TagsState)
            : Resumable
                RpcError (Scoped WindowConfig WindowMenu (MenuUi !! RpcError))
            : MenuFilter (FilterMode Filter) : MenuStream : Reader MenuConfig
            : Scoped Prompt () (MState Prompt)
            : Events (OutChan MenuEvent) MenuEvent
            : Scoped () (EventChan MenuEvent) (Consume MenuEvent)
            : Scoped () (MVar ()) Gate : AtomicState Env
            : AtomicState (Maybe CurrentTag) : Tagged LoadBuffersLock Lock
            : Tagged StoreBuffersLock Lock : Tagged TagsLock Lock
            : Tagged Mru Lock : r)
         a)
-> Sem
     (Resumable PersistError (Persist PersistBuffers)
        : Resumable PersistPathError PersistPath
        : Resumable RpcError (ModalWindowMenus () AddItem)
        : Resumable RpcError (ModalWindowMenus () ListedBuffer)
        : Resumable RpcError (ModalWindowMenus () GrepOutputLine)
        : Resumable RpcError (WindowMenus () FilesState)
        : Resumable RpcError (WindowMenus () TagsState)
        : Resumable
            RpcError (Scoped WindowConfig WindowMenu (MenuUi !! RpcError))
        : MenuFilter (FilterMode Filter) : MenuStream : Reader MenuConfig
        : Scoped Prompt () (MState Prompt)
        : Events (OutChan MenuEvent) MenuEvent
        : Scoped () (EventChan MenuEvent) (Consume MenuEvent)
        : Scoped () (MVar ()) Gate : AtomicState Env
        : AtomicState (Maybe CurrentTag) : Tagged LoadBuffersLock Lock
        : Tagged StoreBuffersLock Lock : Tagged TagsLock Lock
        : Tagged Mru Lock : r)
     a
-> Sem
     (Resumable RpcError (ModalWindowMenus () GrepOutputLine)
        : Resumable RpcError (WindowMenus () FilesState)
        : Resumable RpcError (WindowMenus () TagsState)
        : Resumable
            RpcError (Scoped WindowConfig WindowMenu (MenuUi !! RpcError))
        : MenuFilter (FilterMode Filter) : MenuStream : Reader MenuConfig
        : Scoped Prompt () (MState Prompt)
        : Events (OutChan MenuEvent) MenuEvent
        : Scoped () (EventChan MenuEvent) (Consume MenuEvent)
        : Scoped () (MVar ()) Gate : AtomicState Env
        : AtomicState (Maybe CurrentTag) : Tagged LoadBuffersLock Lock
        : Tagged StoreBuffersLock Lock : Tagged TagsLock Lock
        : Tagged Mru Lock : r)
     a
forall b c a. (b -> c) -> (a -> b) -> a -> c
.
  Sem
  (Resumable RpcError (ModalWindowMenus () AddItem)
     : Resumable RpcError (ModalWindowMenus () ListedBuffer)
     : Resumable RpcError (ModalWindowMenus () GrepOutputLine)
     : Resumable RpcError (WindowMenus () FilesState)
     : Resumable RpcError (WindowMenus () TagsState)
     : Resumable
         RpcError (Scoped WindowConfig WindowMenu (MenuUi !! RpcError))
     : MenuFilter (FilterMode Filter) : MenuStream : Reader MenuConfig
     : Scoped Prompt () (MState Prompt)
     : Events (OutChan MenuEvent) MenuEvent
     : Scoped () (EventChan MenuEvent) (Consume MenuEvent)
     : Scoped () (MVar ()) Gate : AtomicState Env
     : AtomicState (Maybe CurrentTag) : Tagged LoadBuffersLock Lock
     : Tagged StoreBuffersLock Lock : Tagged TagsLock Lock
     : Tagged Mru Lock : r)
  a
-> Sem
     (Resumable RpcError (ModalWindowMenus () ListedBuffer)
        : Resumable RpcError (ModalWindowMenus () GrepOutputLine)
        : Resumable RpcError (WindowMenus () FilesState)
        : Resumable RpcError (WindowMenus () TagsState)
        : Resumable
            RpcError (Scoped WindowConfig WindowMenu (MenuUi !! RpcError))
        : MenuFilter (FilterMode Filter) : MenuStream : Reader MenuConfig
        : Scoped Prompt () (MState Prompt)
        : Events (OutChan MenuEvent) MenuEvent
        : Scoped () (EventChan MenuEvent) (Consume MenuEvent)
        : Scoped () (MVar ()) Gate : AtomicState Env
        : AtomicState (Maybe CurrentTag) : Tagged LoadBuffersLock Lock
        : Tagged StoreBuffersLock Lock : Tagged TagsLock Lock
        : Tagged Mru Lock : r)
     a
forall res ui s (r :: [(* -> *) -> * -> *]).
(MenuState s, Members MenuLoopIO r, Members MenuLoopDeps r,
 Members '[ScopedMenuUi ui res, MenuFilter (Filter s)] r) =>
InterpreterFor (UiMenus ui () s !! RpcError) r
interpretMenus (Sem
   (Resumable RpcError (ModalWindowMenus () AddItem)
      : Resumable RpcError (ModalWindowMenus () ListedBuffer)
      : Resumable RpcError (ModalWindowMenus () GrepOutputLine)
      : Resumable RpcError (WindowMenus () FilesState)
      : Resumable RpcError (WindowMenus () TagsState)
      : Resumable
          RpcError (Scoped WindowConfig WindowMenu (MenuUi !! RpcError))
      : MenuFilter (FilterMode Filter) : MenuStream : Reader MenuConfig
      : Scoped Prompt () (MState Prompt)
      : Events (OutChan MenuEvent) MenuEvent
      : Scoped () (EventChan MenuEvent) (Consume MenuEvent)
      : Scoped () (MVar ()) Gate : AtomicState Env
      : AtomicState (Maybe CurrentTag) : Tagged LoadBuffersLock Lock
      : Tagged StoreBuffersLock Lock : Tagged TagsLock Lock
      : Tagged Mru Lock : r)
   a
 -> Sem
      (Resumable RpcError (ModalWindowMenus () ListedBuffer)
         : Resumable RpcError (ModalWindowMenus () GrepOutputLine)
         : Resumable RpcError (WindowMenus () FilesState)
         : Resumable RpcError (WindowMenus () TagsState)
         : Resumable
             RpcError (Scoped WindowConfig WindowMenu (MenuUi !! RpcError))
         : MenuFilter (FilterMode Filter) : MenuStream : Reader MenuConfig
         : Scoped Prompt () (MState Prompt)
         : Events (OutChan MenuEvent) MenuEvent
         : Scoped () (EventChan MenuEvent) (Consume MenuEvent)
         : Scoped () (MVar ()) Gate : AtomicState Env
         : AtomicState (Maybe CurrentTag) : Tagged LoadBuffersLock Lock
         : Tagged StoreBuffersLock Lock : Tagged TagsLock Lock
         : Tagged Mru Lock : r)
      a)
-> (Sem
      (Resumable PersistError (Persist PersistBuffers)
         : Resumable PersistPathError PersistPath
         : Resumable RpcError (ModalWindowMenus () AddItem)
         : Resumable RpcError (ModalWindowMenus () ListedBuffer)
         : Resumable RpcError (ModalWindowMenus () GrepOutputLine)
         : Resumable RpcError (WindowMenus () FilesState)
         : Resumable RpcError (WindowMenus () TagsState)
         : Resumable
             RpcError (Scoped WindowConfig WindowMenu (MenuUi !! RpcError))
         : MenuFilter (FilterMode Filter) : MenuStream : Reader MenuConfig
         : Scoped Prompt () (MState Prompt)
         : Events (OutChan MenuEvent) MenuEvent
         : Scoped () (EventChan MenuEvent) (Consume MenuEvent)
         : Scoped () (MVar ()) Gate : AtomicState Env
         : AtomicState (Maybe CurrentTag) : Tagged LoadBuffersLock Lock
         : Tagged StoreBuffersLock Lock : Tagged TagsLock Lock
         : Tagged Mru Lock : r)
      a
    -> Sem
         (Resumable RpcError (ModalWindowMenus () AddItem)
            : Resumable RpcError (ModalWindowMenus () ListedBuffer)
            : Resumable RpcError (ModalWindowMenus () GrepOutputLine)
            : Resumable RpcError (WindowMenus () FilesState)
            : Resumable RpcError (WindowMenus () TagsState)
            : Resumable
                RpcError (Scoped WindowConfig WindowMenu (MenuUi !! RpcError))
            : MenuFilter (FilterMode Filter) : MenuStream : Reader MenuConfig
            : Scoped Prompt () (MState Prompt)
            : Events (OutChan MenuEvent) MenuEvent
            : Scoped () (EventChan MenuEvent) (Consume MenuEvent)
            : Scoped () (MVar ()) Gate : AtomicState Env
            : AtomicState (Maybe CurrentTag) : Tagged LoadBuffersLock Lock
            : Tagged StoreBuffersLock Lock : Tagged TagsLock Lock
            : Tagged Mru Lock : r)
         a)
-> Sem
     (Resumable PersistError (Persist PersistBuffers)
        : Resumable PersistPathError PersistPath
        : Resumable RpcError (ModalWindowMenus () AddItem)
        : Resumable RpcError (ModalWindowMenus () ListedBuffer)
        : Resumable RpcError (ModalWindowMenus () GrepOutputLine)
        : Resumable RpcError (WindowMenus () FilesState)
        : Resumable RpcError (WindowMenus () TagsState)
        : Resumable
            RpcError (Scoped WindowConfig WindowMenu (MenuUi !! RpcError))
        : MenuFilter (FilterMode Filter) : MenuStream : Reader MenuConfig
        : Scoped Prompt () (MState Prompt)
        : Events (OutChan MenuEvent) MenuEvent
        : Scoped () (EventChan MenuEvent) (Consume MenuEvent)
        : Scoped () (MVar ()) Gate : AtomicState Env
        : AtomicState (Maybe CurrentTag) : Tagged LoadBuffersLock Lock
        : Tagged StoreBuffersLock Lock : Tagged TagsLock Lock
        : Tagged Mru Lock : r)
     a
-> Sem
     (Resumable RpcError (ModalWindowMenus () ListedBuffer)
        : Resumable RpcError (ModalWindowMenus () GrepOutputLine)
        : Resumable RpcError (WindowMenus () FilesState)
        : Resumable RpcError (WindowMenus () TagsState)
        : Resumable
            RpcError (Scoped WindowConfig WindowMenu (MenuUi !! RpcError))
        : MenuFilter (FilterMode Filter) : MenuStream : Reader MenuConfig
        : Scoped Prompt () (MState Prompt)
        : Events (OutChan MenuEvent) MenuEvent
        : Scoped () (EventChan MenuEvent) (Consume MenuEvent)
        : Scoped () (MVar ()) Gate : AtomicState Env
        : AtomicState (Maybe CurrentTag) : Tagged LoadBuffersLock Lock
        : Tagged StoreBuffersLock Lock : Tagged TagsLock Lock
        : Tagged Mru Lock : r)
     a
forall b c a. (b -> c) -> (a -> b) -> a -> c
.
  Bool
-> InterpreterFor
     (Resumable PersistPathError PersistPath)
     (Resumable RpcError (ModalWindowMenus () AddItem)
        : Resumable RpcError (ModalWindowMenus () ListedBuffer)
        : Resumable RpcError (ModalWindowMenus () GrepOutputLine)
        : Resumable RpcError (WindowMenus () FilesState)
        : Resumable RpcError (WindowMenus () TagsState)
        : Resumable
            RpcError (Scoped WindowConfig WindowMenu (MenuUi !! RpcError))
        : MenuFilter (FilterMode Filter) : MenuStream : Reader MenuConfig
        : Scoped Prompt () (MState Prompt)
        : Events (OutChan MenuEvent) MenuEvent
        : Scoped () (EventChan MenuEvent) (Consume MenuEvent)
        : Scoped () (MVar ()) Gate : AtomicState Env
        : AtomicState (Maybe CurrentTag) : Tagged LoadBuffersLock Lock
        : Tagged StoreBuffersLock Lock : Tagged TagsLock Lock
        : Tagged Mru Lock : r)
forall (r :: [(* -> *) -> * -> *]).
Members
  '[Resumable SettingError Settings, Reader PluginName,
    Error BootError, Embed IO]
  r =>
Bool -> InterpreterFor (Resumable PersistPathError PersistPath) r
interpretPersistPath Bool
True (Sem
   (Resumable PersistPathError PersistPath
      : Resumable RpcError (ModalWindowMenus () AddItem)
      : Resumable RpcError (ModalWindowMenus () ListedBuffer)
      : Resumable RpcError (ModalWindowMenus () GrepOutputLine)
      : Resumable RpcError (WindowMenus () FilesState)
      : Resumable RpcError (WindowMenus () TagsState)
      : Resumable
          RpcError (Scoped WindowConfig WindowMenu (MenuUi !! RpcError))
      : MenuFilter (FilterMode Filter) : MenuStream : Reader MenuConfig
      : Scoped Prompt () (MState Prompt)
      : Events (OutChan MenuEvent) MenuEvent
      : Scoped () (EventChan MenuEvent) (Consume MenuEvent)
      : Scoped () (MVar ()) Gate : AtomicState Env
      : AtomicState (Maybe CurrentTag) : Tagged LoadBuffersLock Lock
      : Tagged StoreBuffersLock Lock : Tagged TagsLock Lock
      : Tagged Mru Lock : r)
   a
 -> Sem
      (Resumable RpcError (ModalWindowMenus () AddItem)
         : Resumable RpcError (ModalWindowMenus () ListedBuffer)
         : Resumable RpcError (ModalWindowMenus () GrepOutputLine)
         : Resumable RpcError (WindowMenus () FilesState)
         : Resumable RpcError (WindowMenus () TagsState)
         : Resumable
             RpcError (Scoped WindowConfig WindowMenu (MenuUi !! RpcError))
         : MenuFilter (FilterMode Filter) : MenuStream : Reader MenuConfig
         : Scoped Prompt () (MState Prompt)
         : Events (OutChan MenuEvent) MenuEvent
         : Scoped () (EventChan MenuEvent) (Consume MenuEvent)
         : Scoped () (MVar ()) Gate : AtomicState Env
         : AtomicState (Maybe CurrentTag) : Tagged LoadBuffersLock Lock
         : Tagged StoreBuffersLock Lock : Tagged TagsLock Lock
         : Tagged Mru Lock : r)
      a)
-> (Sem
      (Resumable PersistError (Persist PersistBuffers)
         : Resumable PersistPathError PersistPath
         : Resumable RpcError (ModalWindowMenus () AddItem)
         : Resumable RpcError (ModalWindowMenus () ListedBuffer)
         : Resumable RpcError (ModalWindowMenus () GrepOutputLine)
         : Resumable RpcError (WindowMenus () FilesState)
         : Resumable RpcError (WindowMenus () TagsState)
         : Resumable
             RpcError (Scoped WindowConfig WindowMenu (MenuUi !! RpcError))
         : MenuFilter (FilterMode Filter) : MenuStream : Reader MenuConfig
         : Scoped Prompt () (MState Prompt)
         : Events (OutChan MenuEvent) MenuEvent
         : Scoped () (EventChan MenuEvent) (Consume MenuEvent)
         : Scoped () (MVar ()) Gate : AtomicState Env
         : AtomicState (Maybe CurrentTag) : Tagged LoadBuffersLock Lock
         : Tagged StoreBuffersLock Lock : Tagged TagsLock Lock
         : Tagged Mru Lock : r)
      a
    -> Sem
         (Resumable PersistPathError PersistPath
            : Resumable RpcError (ModalWindowMenus () AddItem)
            : Resumable RpcError (ModalWindowMenus () ListedBuffer)
            : Resumable RpcError (ModalWindowMenus () GrepOutputLine)
            : Resumable RpcError (WindowMenus () FilesState)
            : Resumable RpcError (WindowMenus () TagsState)
            : Resumable
                RpcError (Scoped WindowConfig WindowMenu (MenuUi !! RpcError))
            : MenuFilter (FilterMode Filter) : MenuStream : Reader MenuConfig
            : Scoped Prompt () (MState Prompt)
            : Events (OutChan MenuEvent) MenuEvent
            : Scoped () (EventChan MenuEvent) (Consume MenuEvent)
            : Scoped () (MVar ()) Gate : AtomicState Env
            : AtomicState (Maybe CurrentTag) : Tagged LoadBuffersLock Lock
            : Tagged StoreBuffersLock Lock : Tagged TagsLock Lock
            : Tagged Mru Lock : r)
         a)
-> Sem
     (Resumable PersistError (Persist PersistBuffers)
        : Resumable PersistPathError PersistPath
        : Resumable RpcError (ModalWindowMenus () AddItem)
        : Resumable RpcError (ModalWindowMenus () ListedBuffer)
        : Resumable RpcError (ModalWindowMenus () GrepOutputLine)
        : Resumable RpcError (WindowMenus () FilesState)
        : Resumable RpcError (WindowMenus () TagsState)
        : Resumable
            RpcError (Scoped WindowConfig WindowMenu (MenuUi !! RpcError))
        : MenuFilter (FilterMode Filter) : MenuStream : Reader MenuConfig
        : Scoped Prompt () (MState Prompt)
        : Events (OutChan MenuEvent) MenuEvent
        : Scoped () (EventChan MenuEvent) (Consume MenuEvent)
        : Scoped () (MVar ()) Gate : AtomicState Env
        : AtomicState (Maybe CurrentTag) : Tagged LoadBuffersLock Lock
        : Tagged StoreBuffersLock Lock : Tagged TagsLock Lock
        : Tagged Mru Lock : r)
     a
-> Sem
     (Resumable RpcError (ModalWindowMenus () AddItem)
        : Resumable RpcError (ModalWindowMenus () ListedBuffer)
        : Resumable RpcError (ModalWindowMenus () GrepOutputLine)
        : Resumable RpcError (WindowMenus () FilesState)
        : Resumable RpcError (WindowMenus () TagsState)
        : Resumable
            RpcError (Scoped WindowConfig WindowMenu (MenuUi !! RpcError))
        : MenuFilter (FilterMode Filter) : MenuStream : Reader MenuConfig
        : Scoped Prompt () (MState Prompt)
        : Events (OutChan MenuEvent) MenuEvent
        : Scoped () (EventChan MenuEvent) (Consume MenuEvent)
        : Scoped () (MVar ()) Gate : AtomicState Env
        : AtomicState (Maybe CurrentTag) : Tagged LoadBuffersLock Lock
        : Tagged StoreBuffersLock Lock : Tagged TagsLock Lock
        : Tagged Mru Lock : r)
     a
forall b c a. (b -> c) -> (a -> b) -> a -> c
.
  Text
-> InterpreterFor
     (Resumable PersistError (Persist PersistBuffers))
     (Resumable PersistPathError PersistPath
        : Resumable RpcError (ModalWindowMenus () AddItem)
        : Resumable RpcError (ModalWindowMenus () ListedBuffer)
        : Resumable RpcError (ModalWindowMenus () GrepOutputLine)
        : Resumable RpcError (WindowMenus () FilesState)
        : Resumable RpcError (WindowMenus () TagsState)
        : Resumable
            RpcError (Scoped WindowConfig WindowMenu (MenuUi !! RpcError))
        : MenuFilter (FilterMode Filter) : MenuStream : Reader MenuConfig
        : Scoped Prompt () (MState Prompt)
        : Events (OutChan MenuEvent) MenuEvent
        : Scoped () (EventChan MenuEvent) (Consume MenuEvent)
        : Scoped () (MVar ()) Gate : AtomicState Env
        : AtomicState (Maybe CurrentTag) : Tagged LoadBuffersLock Lock
        : Tagged StoreBuffersLock Lock : Tagged TagsLock Lock
        : Tagged Mru Lock : r)
forall a (r :: [(* -> *) -> * -> *]).
(ToJSON a, FromJSON a,
 Members
   '[Resumable PersistPathError PersistPath, Error BootError, Log,
     Embed IO]
   r) =>
Text -> InterpreterFor (Persist a !! PersistError) r
interpretPersist Text
"buffers" (Sem
   (Resumable PersistError (Persist PersistBuffers)
      : Resumable PersistPathError PersistPath
      : Resumable RpcError (ModalWindowMenus () AddItem)
      : Resumable RpcError (ModalWindowMenus () ListedBuffer)
      : Resumable RpcError (ModalWindowMenus () GrepOutputLine)
      : Resumable RpcError (WindowMenus () FilesState)
      : Resumable RpcError (WindowMenus () TagsState)
      : Resumable
          RpcError (Scoped WindowConfig WindowMenu (MenuUi !! RpcError))
      : MenuFilter (FilterMode Filter) : MenuStream : Reader MenuConfig
      : Scoped Prompt () (MState Prompt)
      : Events (OutChan MenuEvent) MenuEvent
      : Scoped () (EventChan MenuEvent) (Consume MenuEvent)
      : Scoped () (MVar ()) Gate : AtomicState Env
      : AtomicState (Maybe CurrentTag) : Tagged LoadBuffersLock Lock
      : Tagged StoreBuffersLock Lock : Tagged TagsLock Lock
      : Tagged Mru Lock : r)
   a
 -> Sem
      (Resumable PersistPathError PersistPath
         : Resumable RpcError (ModalWindowMenus () AddItem)
         : Resumable RpcError (ModalWindowMenus () ListedBuffer)
         : Resumable RpcError (ModalWindowMenus () GrepOutputLine)
         : Resumable RpcError (WindowMenus () FilesState)
         : Resumable RpcError (WindowMenus () TagsState)
         : Resumable
             RpcError (Scoped WindowConfig WindowMenu (MenuUi !! RpcError))
         : MenuFilter (FilterMode Filter) : MenuStream : Reader MenuConfig
         : Scoped Prompt () (MState Prompt)
         : Events (OutChan MenuEvent) MenuEvent
         : Scoped () (EventChan MenuEvent) (Consume MenuEvent)
         : Scoped () (MVar ()) Gate : AtomicState Env
         : AtomicState (Maybe CurrentTag) : Tagged LoadBuffersLock Lock
         : Tagged StoreBuffersLock Lock : Tagged TagsLock Lock
         : Tagged Mru Lock : r)
      a)
-> (Sem
      (Resumable PersistError (Persist PersistBuffers)
         : Resumable PersistPathError PersistPath
         : Resumable RpcError (ModalWindowMenus () AddItem)
         : Resumable RpcError (ModalWindowMenus () ListedBuffer)
         : Resumable RpcError (ModalWindowMenus () GrepOutputLine)
         : Resumable RpcError (WindowMenus () FilesState)
         : Resumable RpcError (WindowMenus () TagsState)
         : Resumable
             RpcError (Scoped WindowConfig WindowMenu (MenuUi !! RpcError))
         : MenuFilter (FilterMode Filter) : MenuStream : Reader MenuConfig
         : Scoped Prompt () (MState Prompt)
         : Events (OutChan MenuEvent) MenuEvent
         : Scoped () (EventChan MenuEvent) (Consume MenuEvent)
         : Scoped () (MVar ()) Gate : AtomicState Env
         : AtomicState (Maybe CurrentTag) : Tagged LoadBuffersLock Lock
         : Tagged StoreBuffersLock Lock : Tagged TagsLock Lock
         : Tagged Mru Lock : r)
      a
    -> Sem
         (Resumable PersistError (Persist PersistBuffers)
            : Resumable PersistPathError PersistPath
            : Resumable RpcError (ModalWindowMenus () AddItem)
            : Resumable RpcError (ModalWindowMenus () ListedBuffer)
            : Resumable RpcError (ModalWindowMenus () GrepOutputLine)
            : Resumable RpcError (WindowMenus () FilesState)
            : Resumable RpcError (WindowMenus () TagsState)
            : Resumable
                RpcError (Scoped WindowConfig WindowMenu (MenuUi !! RpcError))
            : MenuFilter (FilterMode Filter) : MenuStream : Reader MenuConfig
            : Scoped Prompt () (MState Prompt)
            : Events (OutChan MenuEvent) MenuEvent
            : Scoped () (EventChan MenuEvent) (Consume MenuEvent)
            : Scoped () (MVar ()) Gate : AtomicState Env
            : AtomicState (Maybe CurrentTag) : Tagged LoadBuffersLock Lock
            : Tagged StoreBuffersLock Lock : Tagged TagsLock Lock
            : Tagged Mru Lock : r)
         a)
-> Sem
     (Resumable PersistError (Persist PersistBuffers)
        : Resumable PersistPathError PersistPath
        : Resumable RpcError (ModalWindowMenus () AddItem)
        : Resumable RpcError (ModalWindowMenus () ListedBuffer)
        : Resumable RpcError (ModalWindowMenus () GrepOutputLine)
        : Resumable RpcError (WindowMenus () FilesState)
        : Resumable RpcError (WindowMenus () TagsState)
        : Resumable
            RpcError (Scoped WindowConfig WindowMenu (MenuUi !! RpcError))
        : MenuFilter (FilterMode Filter) : MenuStream : Reader MenuConfig
        : Scoped Prompt () (MState Prompt)
        : Events (OutChan MenuEvent) MenuEvent
        : Scoped () (EventChan MenuEvent) (Consume MenuEvent)
        : Scoped () (MVar ()) Gate : AtomicState Env
        : AtomicState (Maybe CurrentTag) : Tagged LoadBuffersLock Lock
        : Tagged StoreBuffersLock Lock : Tagged TagsLock Lock
        : Tagged Mru Lock : r)
     a
-> Sem
     (Resumable PersistPathError PersistPath
        : Resumable RpcError (ModalWindowMenus () AddItem)
        : Resumable RpcError (ModalWindowMenus () ListedBuffer)
        : Resumable RpcError (ModalWindowMenus () GrepOutputLine)
        : Resumable RpcError (WindowMenus () FilesState)
        : Resumable RpcError (WindowMenus () TagsState)
        : Resumable
            RpcError (Scoped WindowConfig WindowMenu (MenuUi !! RpcError))
        : MenuFilter (FilterMode Filter) : MenuStream : Reader MenuConfig
        : Scoped Prompt () (MState Prompt)
        : Events (OutChan MenuEvent) MenuEvent
        : Scoped () (EventChan MenuEvent) (Consume MenuEvent)
        : Scoped () (MVar ()) Gate : AtomicState Env
        : AtomicState (Maybe CurrentTag) : Tagged LoadBuffersLock Lock
        : Tagged StoreBuffersLock Lock : Tagged TagsLock Lock
        : Tagged Mru Lock : r)
     a
forall b c a. (b -> c) -> (a -> b) -> a -> c
.
  Sem
  (Resumable PersistError (Persist PersistBuffers)
     : Resumable PersistPathError PersistPath
     : Resumable RpcError (ModalWindowMenus () AddItem)
     : Resumable RpcError (ModalWindowMenus () ListedBuffer)
     : Resumable RpcError (ModalWindowMenus () GrepOutputLine)
     : Resumable RpcError (WindowMenus () FilesState)
     : Resumable RpcError (WindowMenus () TagsState)
     : Resumable
         RpcError (Scoped WindowConfig WindowMenu (MenuUi !! RpcError))
     : MenuFilter (FilterMode Filter) : MenuStream : Reader MenuConfig
     : Scoped Prompt () (MState Prompt)
     : Events (OutChan MenuEvent) MenuEvent
     : Scoped () (EventChan MenuEvent) (Consume MenuEvent)
     : Scoped () (MVar ()) Gate : AtomicState Env
     : AtomicState (Maybe CurrentTag) : Tagged LoadBuffersLock Lock
     : Tagged StoreBuffersLock Lock : Tagged TagsLock Lock
     : Tagged Mru Lock : r)
  ()
-> Sem
     (Resumable PersistError (Persist PersistBuffers)
        : Resumable PersistPathError PersistPath
        : Resumable RpcError (ModalWindowMenus () AddItem)
        : Resumable RpcError (ModalWindowMenus () ListedBuffer)
        : Resumable RpcError (ModalWindowMenus () GrepOutputLine)
        : Resumable RpcError (WindowMenus () FilesState)
        : Resumable RpcError (WindowMenus () TagsState)
        : Resumable
            RpcError (Scoped WindowConfig WindowMenu (MenuUi !! RpcError))
        : MenuFilter (FilterMode Filter) : MenuStream : Reader MenuConfig
        : Scoped Prompt () (MState Prompt)
        : Events (OutChan MenuEvent) MenuEvent
        : Scoped () (EventChan MenuEvent) (Consume MenuEvent)
        : Scoped () (MVar ()) Gate : AtomicState Env
        : AtomicState (Maybe CurrentTag) : Tagged LoadBuffersLock Lock
        : Tagged StoreBuffersLock Lock : Tagged TagsLock Lock
        : Tagged Mru Lock : r)
     a
-> Sem
     (Resumable PersistError (Persist PersistBuffers)
        : Resumable PersistPathError PersistPath
        : Resumable RpcError (ModalWindowMenus () AddItem)
        : Resumable RpcError (ModalWindowMenus () ListedBuffer)
        : Resumable RpcError (ModalWindowMenus () GrepOutputLine)
        : Resumable RpcError (WindowMenus () FilesState)
        : Resumable RpcError (WindowMenus () TagsState)
        : Resumable
            RpcError (Scoped WindowConfig WindowMenu (MenuUi !! RpcError))
        : MenuFilter (FilterMode Filter) : MenuStream : Reader MenuConfig
        : Scoped Prompt () (MState Prompt)
        : Events (OutChan MenuEvent) MenuEvent
        : Scoped () (EventChan MenuEvent) (Consume MenuEvent)
        : Scoped () (MVar ()) Gate : AtomicState Env
        : AtomicState (Maybe CurrentTag) : Tagged LoadBuffersLock Lock
        : Tagged StoreBuffersLock Lock : Tagged TagsLock Lock
        : Tagged Mru Lock : r)
     a
forall (r :: [(* -> *) -> * -> *]) b a.
Members '[Resource, Race, Async] r =>
Sem r b -> Sem r a -> Sem r a
withAsync_ Sem
  (Resumable PersistError (Persist PersistBuffers)
     : Resumable PersistPathError PersistPath
     : Resumable RpcError (ModalWindowMenus () AddItem)
     : Resumable RpcError (ModalWindowMenus () ListedBuffer)
     : Resumable RpcError (ModalWindowMenus () GrepOutputLine)
     : Resumable RpcError (WindowMenus () FilesState)
     : Resumable RpcError (WindowMenus () TagsState)
     : Resumable
         RpcError (Scoped WindowConfig WindowMenu (MenuUi !! RpcError))
     : MenuFilter (FilterMode Filter) : MenuStream : Reader MenuConfig
     : Scoped Prompt () (MState Prompt)
     : Events (OutChan MenuEvent) MenuEvent
     : Scoped () (EventChan MenuEvent) (Consume MenuEvent)
     : Scoped () (MVar ()) Gate : AtomicState Env
     : AtomicState (Maybe CurrentTag) : Tagged LoadBuffersLock Lock
     : Tagged StoreBuffersLock Lock : Tagged TagsLock Lock
     : Tagged Mru Lock : r)
  ()
forall (r :: [(* -> *) -> * -> *]).
(Members
   '[Resumable PersistError (Persist PersistBuffers), Log, Resource,
     Embed IO]
   r,
 Members
   '[AtomicState Env, Resumable SettingError Settings,
     Resumable RpcError Rpc, Tagged LoadBuffersLock Lock,
     DataLog LogReport]
   r) =>
Sem r ()
prepare

proteome :: IO ()
proteome :: IO ()
proteome =
  forall (r :: [(* -> *) -> * -> *]).
HigherOrder r (RemoteStack ()) =>
PluginConfig ()
-> InterpretersFor r (RemoteStack ())
-> [RpcHandler (r ++ RemoteStack ())]
-> IO ()
runNvimPluginIO @ProteomeProdStack PluginConfig ()
"proteome" InterpretersFor ProteomeProdStack (RemoteStack ())
forall eres (r :: [(* -> *) -> * -> *]).
(Member (EventConsumer eres Event) r,
 Members
   '[Resumable RpcError Rpc, Resumable SettingError Settings,
     Resumable RpcError Scratch, Reader PluginName, DataLog LogReport]
   r,
 Members
   '[Error BootError, Race, Log, Resource, UninterruptibleMaskIO,
     Async, Embed IO, Final IO]
   r) =>
InterpretersFor ProteomeProdStack r
interpretProteomeProdStack [RpcHandler (ProteomeProdStack ++ RemoteStack ())]
forall (r :: [(* -> *) -> * -> *]).
(Members ProteomeProdStack r,
 Members
   '[Resumable SettingError Settings, Resumable RpcError Scratch,
     Resumable RpcError Rpc, Reports, Reader PluginName]
   r,
 Members
   '[UninterruptibleMaskIO, UninterruptibleMaskIO,
     Scoped () (MVar ()) Gate, Race, Async, Resource, Embed IO,
     Final IO]
   r,
 Members
   '[DataLog LogReport, Time Time Date, Log, UninterruptibleMaskIO,
     Race, Resource, Async, Embed IO, Final IO]
   r) =>
[RpcHandler r]
handlers