{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE OverloadedStrings #-}
module MCP.Server.Protocol
(
InitializeRequest(..)
, InitializeResponse(..)
, InitializedNotification(..)
, PingRequest(..)
, PongResponse(..)
, PromptsListRequest(..)
, PromptsListResponse(..)
, PromptsGetRequest(..)
, PromptsGetResponse(..)
, PromptMessage(..)
, MessageRole(..)
, ResourcesListRequest(..)
, ResourcesListResponse(..)
, ResourcesReadRequest(..)
, ResourcesReadResponse(..)
, ToolsListRequest(..)
, ToolsListResponse(..)
, ToolsCallRequest(..)
, ToolsCallResponse(..)
, ListChangedNotification(..)
, protocolVersion
) where
import Data.Text (Text)
import Data.Aeson
import Data.Map (Map)
import Network.URI (URI, parseURI)
import GHC.Generics (Generic)
import MCP.Server.Types
protocolVersion :: Text
protocolVersion :: Text
protocolVersion = Text
"2024-11-05"
data InitializeRequest = InitializeRequest
{ InitializeRequest -> Text
initProtocolVersion :: Text
, InitializeRequest -> Value
initCapabilities :: Value
, InitializeRequest -> Value
initClientInfo :: Value
} deriving (Int -> InitializeRequest -> ShowS
[InitializeRequest] -> ShowS
InitializeRequest -> String
(Int -> InitializeRequest -> ShowS)
-> (InitializeRequest -> String)
-> ([InitializeRequest] -> ShowS)
-> Show InitializeRequest
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> InitializeRequest -> ShowS
showsPrec :: Int -> InitializeRequest -> ShowS
$cshow :: InitializeRequest -> String
show :: InitializeRequest -> String
$cshowList :: [InitializeRequest] -> ShowS
showList :: [InitializeRequest] -> ShowS
Show, InitializeRequest -> InitializeRequest -> Bool
(InitializeRequest -> InitializeRequest -> Bool)
-> (InitializeRequest -> InitializeRequest -> Bool)
-> Eq InitializeRequest
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: InitializeRequest -> InitializeRequest -> Bool
== :: InitializeRequest -> InitializeRequest -> Bool
$c/= :: InitializeRequest -> InitializeRequest -> Bool
/= :: InitializeRequest -> InitializeRequest -> Bool
Eq, (forall x. InitializeRequest -> Rep InitializeRequest x)
-> (forall x. Rep InitializeRequest x -> InitializeRequest)
-> Generic InitializeRequest
forall x. Rep InitializeRequest x -> InitializeRequest
forall x. InitializeRequest -> Rep InitializeRequest x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. InitializeRequest -> Rep InitializeRequest x
from :: forall x. InitializeRequest -> Rep InitializeRequest x
$cto :: forall x. Rep InitializeRequest x -> InitializeRequest
to :: forall x. Rep InitializeRequest x -> InitializeRequest
Generic)
instance FromJSON InitializeRequest where
parseJSON :: Value -> Parser InitializeRequest
parseJSON = String
-> (Object -> Parser InitializeRequest)
-> Value
-> Parser InitializeRequest
forall a. String -> (Object -> Parser a) -> Value -> Parser a
withObject String
"InitializeRequest" ((Object -> Parser InitializeRequest)
-> Value -> Parser InitializeRequest)
-> (Object -> Parser InitializeRequest)
-> Value
-> Parser InitializeRequest
forall a b. (a -> b) -> a -> b
$ \Object
o -> Text -> Value -> Value -> InitializeRequest
InitializeRequest
(Text -> Value -> Value -> InitializeRequest)
-> Parser Text -> Parser (Value -> Value -> InitializeRequest)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Object
o Object -> Key -> Parser Text
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"protocolVersion"
Parser (Value -> Value -> InitializeRequest)
-> Parser Value -> Parser (Value -> InitializeRequest)
forall a b. Parser (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o Object -> Key -> Parser Value
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"capabilities"
Parser (Value -> InitializeRequest)
-> Parser Value -> Parser InitializeRequest
forall a b. Parser (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o Object -> Key -> Parser Value
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"clientInfo"
data InitializeResponse = InitializeResponse
{ InitializeResponse -> Text
initRespProtocolVersion :: Text
, InitializeResponse -> ServerCapabilities
initRespCapabilities :: ServerCapabilities
, InitializeResponse -> McpServerInfo
initRespServerInfo :: McpServerInfo
} deriving (Int -> InitializeResponse -> ShowS
[InitializeResponse] -> ShowS
InitializeResponse -> String
(Int -> InitializeResponse -> ShowS)
-> (InitializeResponse -> String)
-> ([InitializeResponse] -> ShowS)
-> Show InitializeResponse
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> InitializeResponse -> ShowS
showsPrec :: Int -> InitializeResponse -> ShowS
$cshow :: InitializeResponse -> String
show :: InitializeResponse -> String
$cshowList :: [InitializeResponse] -> ShowS
showList :: [InitializeResponse] -> ShowS
Show, InitializeResponse -> InitializeResponse -> Bool
(InitializeResponse -> InitializeResponse -> Bool)
-> (InitializeResponse -> InitializeResponse -> Bool)
-> Eq InitializeResponse
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: InitializeResponse -> InitializeResponse -> Bool
== :: InitializeResponse -> InitializeResponse -> Bool
$c/= :: InitializeResponse -> InitializeResponse -> Bool
/= :: InitializeResponse -> InitializeResponse -> Bool
Eq, (forall x. InitializeResponse -> Rep InitializeResponse x)
-> (forall x. Rep InitializeResponse x -> InitializeResponse)
-> Generic InitializeResponse
forall x. Rep InitializeResponse x -> InitializeResponse
forall x. InitializeResponse -> Rep InitializeResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. InitializeResponse -> Rep InitializeResponse x
from :: forall x. InitializeResponse -> Rep InitializeResponse x
$cto :: forall x. Rep InitializeResponse x -> InitializeResponse
to :: forall x. Rep InitializeResponse x -> InitializeResponse
Generic)
instance ToJSON InitializeResponse where
toJSON :: InitializeResponse -> Value
toJSON InitializeResponse
resp = [Pair] -> Value
object
[ Key
"protocolVersion" Key -> Text -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= InitializeResponse -> Text
initRespProtocolVersion InitializeResponse
resp
, Key
"capabilities" Key -> ServerCapabilities -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= InitializeResponse -> ServerCapabilities
initRespCapabilities InitializeResponse
resp
, Key
"serverInfo" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= [Pair] -> Value
object
[ Key
"name" Key -> Text -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= McpServerInfo -> Text
serverName (InitializeResponse -> McpServerInfo
initRespServerInfo InitializeResponse
resp)
, Key
"version" Key -> Text -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= McpServerInfo -> Text
serverVersion (InitializeResponse -> McpServerInfo
initRespServerInfo InitializeResponse
resp)
, Key
"instructions" Key -> Text -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= McpServerInfo -> Text
serverInstructions (InitializeResponse -> McpServerInfo
initRespServerInfo InitializeResponse
resp)
]
]
data InitializedNotification = InitializedNotification
deriving (Int -> InitializedNotification -> ShowS
[InitializedNotification] -> ShowS
InitializedNotification -> String
(Int -> InitializedNotification -> ShowS)
-> (InitializedNotification -> String)
-> ([InitializedNotification] -> ShowS)
-> Show InitializedNotification
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> InitializedNotification -> ShowS
showsPrec :: Int -> InitializedNotification -> ShowS
$cshow :: InitializedNotification -> String
show :: InitializedNotification -> String
$cshowList :: [InitializedNotification] -> ShowS
showList :: [InitializedNotification] -> ShowS
Show, InitializedNotification -> InitializedNotification -> Bool
(InitializedNotification -> InitializedNotification -> Bool)
-> (InitializedNotification -> InitializedNotification -> Bool)
-> Eq InitializedNotification
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: InitializedNotification -> InitializedNotification -> Bool
== :: InitializedNotification -> InitializedNotification -> Bool
$c/= :: InitializedNotification -> InitializedNotification -> Bool
/= :: InitializedNotification -> InitializedNotification -> Bool
Eq, (forall x.
InitializedNotification -> Rep InitializedNotification x)
-> (forall x.
Rep InitializedNotification x -> InitializedNotification)
-> Generic InitializedNotification
forall x. Rep InitializedNotification x -> InitializedNotification
forall x. InitializedNotification -> Rep InitializedNotification x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. InitializedNotification -> Rep InitializedNotification x
from :: forall x. InitializedNotification -> Rep InitializedNotification x
$cto :: forall x. Rep InitializedNotification x -> InitializedNotification
to :: forall x. Rep InitializedNotification x -> InitializedNotification
Generic)
instance FromJSON InitializedNotification where
parseJSON :: Value -> Parser InitializedNotification
parseJSON Value
_ = InitializedNotification -> Parser InitializedNotification
forall a. a -> Parser a
forall (m :: * -> *) a. Monad m => a -> m a
return InitializedNotification
InitializedNotification
data PingRequest = PingRequest
deriving (Int -> PingRequest -> ShowS
[PingRequest] -> ShowS
PingRequest -> String
(Int -> PingRequest -> ShowS)
-> (PingRequest -> String)
-> ([PingRequest] -> ShowS)
-> Show PingRequest
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> PingRequest -> ShowS
showsPrec :: Int -> PingRequest -> ShowS
$cshow :: PingRequest -> String
show :: PingRequest -> String
$cshowList :: [PingRequest] -> ShowS
showList :: [PingRequest] -> ShowS
Show, PingRequest -> PingRequest -> Bool
(PingRequest -> PingRequest -> Bool)
-> (PingRequest -> PingRequest -> Bool) -> Eq PingRequest
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: PingRequest -> PingRequest -> Bool
== :: PingRequest -> PingRequest -> Bool
$c/= :: PingRequest -> PingRequest -> Bool
/= :: PingRequest -> PingRequest -> Bool
Eq, (forall x. PingRequest -> Rep PingRequest x)
-> (forall x. Rep PingRequest x -> PingRequest)
-> Generic PingRequest
forall x. Rep PingRequest x -> PingRequest
forall x. PingRequest -> Rep PingRequest x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. PingRequest -> Rep PingRequest x
from :: forall x. PingRequest -> Rep PingRequest x
$cto :: forall x. Rep PingRequest x -> PingRequest
to :: forall x. Rep PingRequest x -> PingRequest
Generic)
instance FromJSON PingRequest where
parseJSON :: Value -> Parser PingRequest
parseJSON Value
_ = PingRequest -> Parser PingRequest
forall a. a -> Parser a
forall (m :: * -> *) a. Monad m => a -> m a
return PingRequest
PingRequest
data PongResponse = PongResponse
deriving (Int -> PongResponse -> ShowS
[PongResponse] -> ShowS
PongResponse -> String
(Int -> PongResponse -> ShowS)
-> (PongResponse -> String)
-> ([PongResponse] -> ShowS)
-> Show PongResponse
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> PongResponse -> ShowS
showsPrec :: Int -> PongResponse -> ShowS
$cshow :: PongResponse -> String
show :: PongResponse -> String
$cshowList :: [PongResponse] -> ShowS
showList :: [PongResponse] -> ShowS
Show, PongResponse -> PongResponse -> Bool
(PongResponse -> PongResponse -> Bool)
-> (PongResponse -> PongResponse -> Bool) -> Eq PongResponse
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: PongResponse -> PongResponse -> Bool
== :: PongResponse -> PongResponse -> Bool
$c/= :: PongResponse -> PongResponse -> Bool
/= :: PongResponse -> PongResponse -> Bool
Eq, (forall x. PongResponse -> Rep PongResponse x)
-> (forall x. Rep PongResponse x -> PongResponse)
-> Generic PongResponse
forall x. Rep PongResponse x -> PongResponse
forall x. PongResponse -> Rep PongResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. PongResponse -> Rep PongResponse x
from :: forall x. PongResponse -> Rep PongResponse x
$cto :: forall x. Rep PongResponse x -> PongResponse
to :: forall x. Rep PongResponse x -> PongResponse
Generic)
instance ToJSON PongResponse where
toJSON :: PongResponse -> Value
toJSON PongResponse
PongResponse = [Pair] -> Value
object []
data MessageRole = RoleUser | RoleAssistant
deriving (Int -> MessageRole -> ShowS
[MessageRole] -> ShowS
MessageRole -> String
(Int -> MessageRole -> ShowS)
-> (MessageRole -> String)
-> ([MessageRole] -> ShowS)
-> Show MessageRole
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> MessageRole -> ShowS
showsPrec :: Int -> MessageRole -> ShowS
$cshow :: MessageRole -> String
show :: MessageRole -> String
$cshowList :: [MessageRole] -> ShowS
showList :: [MessageRole] -> ShowS
Show, MessageRole -> MessageRole -> Bool
(MessageRole -> MessageRole -> Bool)
-> (MessageRole -> MessageRole -> Bool) -> Eq MessageRole
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: MessageRole -> MessageRole -> Bool
== :: MessageRole -> MessageRole -> Bool
$c/= :: MessageRole -> MessageRole -> Bool
/= :: MessageRole -> MessageRole -> Bool
Eq, (forall x. MessageRole -> Rep MessageRole x)
-> (forall x. Rep MessageRole x -> MessageRole)
-> Generic MessageRole
forall x. Rep MessageRole x -> MessageRole
forall x. MessageRole -> Rep MessageRole x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. MessageRole -> Rep MessageRole x
from :: forall x. MessageRole -> Rep MessageRole x
$cto :: forall x. Rep MessageRole x -> MessageRole
to :: forall x. Rep MessageRole x -> MessageRole
Generic)
instance ToJSON MessageRole where
toJSON :: MessageRole -> Value
toJSON MessageRole
RoleUser = Value
"user"
toJSON MessageRole
RoleAssistant = Value
"assistant"
data PromptMessage = PromptMessage
{ PromptMessage -> MessageRole
promptMessageRole :: MessageRole
, PromptMessage -> Content
promptMessageContent :: Content
} deriving (Int -> PromptMessage -> ShowS
[PromptMessage] -> ShowS
PromptMessage -> String
(Int -> PromptMessage -> ShowS)
-> (PromptMessage -> String)
-> ([PromptMessage] -> ShowS)
-> Show PromptMessage
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> PromptMessage -> ShowS
showsPrec :: Int -> PromptMessage -> ShowS
$cshow :: PromptMessage -> String
show :: PromptMessage -> String
$cshowList :: [PromptMessage] -> ShowS
showList :: [PromptMessage] -> ShowS
Show, PromptMessage -> PromptMessage -> Bool
(PromptMessage -> PromptMessage -> Bool)
-> (PromptMessage -> PromptMessage -> Bool) -> Eq PromptMessage
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: PromptMessage -> PromptMessage -> Bool
== :: PromptMessage -> PromptMessage -> Bool
$c/= :: PromptMessage -> PromptMessage -> Bool
/= :: PromptMessage -> PromptMessage -> Bool
Eq, (forall x. PromptMessage -> Rep PromptMessage x)
-> (forall x. Rep PromptMessage x -> PromptMessage)
-> Generic PromptMessage
forall x. Rep PromptMessage x -> PromptMessage
forall x. PromptMessage -> Rep PromptMessage x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. PromptMessage -> Rep PromptMessage x
from :: forall x. PromptMessage -> Rep PromptMessage x
$cto :: forall x. Rep PromptMessage x -> PromptMessage
to :: forall x. Rep PromptMessage x -> PromptMessage
Generic)
instance ToJSON PromptMessage where
toJSON :: PromptMessage -> Value
toJSON PromptMessage
msg = [Pair] -> Value
object
[ Key
"role" Key -> MessageRole -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= PromptMessage -> MessageRole
promptMessageRole PromptMessage
msg
, Key
"content" Key -> Content -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= PromptMessage -> Content
promptMessageContent PromptMessage
msg
]
data PromptsListRequest = PromptsListRequest
deriving (Int -> PromptsListRequest -> ShowS
[PromptsListRequest] -> ShowS
PromptsListRequest -> String
(Int -> PromptsListRequest -> ShowS)
-> (PromptsListRequest -> String)
-> ([PromptsListRequest] -> ShowS)
-> Show PromptsListRequest
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> PromptsListRequest -> ShowS
showsPrec :: Int -> PromptsListRequest -> ShowS
$cshow :: PromptsListRequest -> String
show :: PromptsListRequest -> String
$cshowList :: [PromptsListRequest] -> ShowS
showList :: [PromptsListRequest] -> ShowS
Show, PromptsListRequest -> PromptsListRequest -> Bool
(PromptsListRequest -> PromptsListRequest -> Bool)
-> (PromptsListRequest -> PromptsListRequest -> Bool)
-> Eq PromptsListRequest
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: PromptsListRequest -> PromptsListRequest -> Bool
== :: PromptsListRequest -> PromptsListRequest -> Bool
$c/= :: PromptsListRequest -> PromptsListRequest -> Bool
/= :: PromptsListRequest -> PromptsListRequest -> Bool
Eq, (forall x. PromptsListRequest -> Rep PromptsListRequest x)
-> (forall x. Rep PromptsListRequest x -> PromptsListRequest)
-> Generic PromptsListRequest
forall x. Rep PromptsListRequest x -> PromptsListRequest
forall x. PromptsListRequest -> Rep PromptsListRequest x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. PromptsListRequest -> Rep PromptsListRequest x
from :: forall x. PromptsListRequest -> Rep PromptsListRequest x
$cto :: forall x. Rep PromptsListRequest x -> PromptsListRequest
to :: forall x. Rep PromptsListRequest x -> PromptsListRequest
Generic)
instance FromJSON PromptsListRequest where
parseJSON :: Value -> Parser PromptsListRequest
parseJSON Value
_ = PromptsListRequest -> Parser PromptsListRequest
forall a. a -> Parser a
forall (m :: * -> *) a. Monad m => a -> m a
return PromptsListRequest
PromptsListRequest
data PromptsListResponse = PromptsListResponse
{ PromptsListResponse -> [PromptDefinition]
promptsListPrompts :: [PromptDefinition]
} deriving (Int -> PromptsListResponse -> ShowS
[PromptsListResponse] -> ShowS
PromptsListResponse -> String
(Int -> PromptsListResponse -> ShowS)
-> (PromptsListResponse -> String)
-> ([PromptsListResponse] -> ShowS)
-> Show PromptsListResponse
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> PromptsListResponse -> ShowS
showsPrec :: Int -> PromptsListResponse -> ShowS
$cshow :: PromptsListResponse -> String
show :: PromptsListResponse -> String
$cshowList :: [PromptsListResponse] -> ShowS
showList :: [PromptsListResponse] -> ShowS
Show, PromptsListResponse -> PromptsListResponse -> Bool
(PromptsListResponse -> PromptsListResponse -> Bool)
-> (PromptsListResponse -> PromptsListResponse -> Bool)
-> Eq PromptsListResponse
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: PromptsListResponse -> PromptsListResponse -> Bool
== :: PromptsListResponse -> PromptsListResponse -> Bool
$c/= :: PromptsListResponse -> PromptsListResponse -> Bool
/= :: PromptsListResponse -> PromptsListResponse -> Bool
Eq, (forall x. PromptsListResponse -> Rep PromptsListResponse x)
-> (forall x. Rep PromptsListResponse x -> PromptsListResponse)
-> Generic PromptsListResponse
forall x. Rep PromptsListResponse x -> PromptsListResponse
forall x. PromptsListResponse -> Rep PromptsListResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. PromptsListResponse -> Rep PromptsListResponse x
from :: forall x. PromptsListResponse -> Rep PromptsListResponse x
$cto :: forall x. Rep PromptsListResponse x -> PromptsListResponse
to :: forall x. Rep PromptsListResponse x -> PromptsListResponse
Generic)
instance ToJSON PromptsListResponse where
toJSON :: PromptsListResponse -> Value
toJSON PromptsListResponse
resp = [Pair] -> Value
object
[ Key
"prompts" Key -> [PromptDefinition] -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= PromptsListResponse -> [PromptDefinition]
promptsListPrompts PromptsListResponse
resp
]
data PromptsGetRequest = PromptsGetRequest
{ PromptsGetRequest -> Text
promptsGetName :: Text
, PromptsGetRequest -> Maybe (Map Text Value)
promptsGetArguments :: Maybe (Map Text Value)
} deriving (Int -> PromptsGetRequest -> ShowS
[PromptsGetRequest] -> ShowS
PromptsGetRequest -> String
(Int -> PromptsGetRequest -> ShowS)
-> (PromptsGetRequest -> String)
-> ([PromptsGetRequest] -> ShowS)
-> Show PromptsGetRequest
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> PromptsGetRequest -> ShowS
showsPrec :: Int -> PromptsGetRequest -> ShowS
$cshow :: PromptsGetRequest -> String
show :: PromptsGetRequest -> String
$cshowList :: [PromptsGetRequest] -> ShowS
showList :: [PromptsGetRequest] -> ShowS
Show, PromptsGetRequest -> PromptsGetRequest -> Bool
(PromptsGetRequest -> PromptsGetRequest -> Bool)
-> (PromptsGetRequest -> PromptsGetRequest -> Bool)
-> Eq PromptsGetRequest
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: PromptsGetRequest -> PromptsGetRequest -> Bool
== :: PromptsGetRequest -> PromptsGetRequest -> Bool
$c/= :: PromptsGetRequest -> PromptsGetRequest -> Bool
/= :: PromptsGetRequest -> PromptsGetRequest -> Bool
Eq, (forall x. PromptsGetRequest -> Rep PromptsGetRequest x)
-> (forall x. Rep PromptsGetRequest x -> PromptsGetRequest)
-> Generic PromptsGetRequest
forall x. Rep PromptsGetRequest x -> PromptsGetRequest
forall x. PromptsGetRequest -> Rep PromptsGetRequest x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. PromptsGetRequest -> Rep PromptsGetRequest x
from :: forall x. PromptsGetRequest -> Rep PromptsGetRequest x
$cto :: forall x. Rep PromptsGetRequest x -> PromptsGetRequest
to :: forall x. Rep PromptsGetRequest x -> PromptsGetRequest
Generic)
instance FromJSON PromptsGetRequest where
parseJSON :: Value -> Parser PromptsGetRequest
parseJSON = String
-> (Object -> Parser PromptsGetRequest)
-> Value
-> Parser PromptsGetRequest
forall a. String -> (Object -> Parser a) -> Value -> Parser a
withObject String
"PromptsGetRequest" ((Object -> Parser PromptsGetRequest)
-> Value -> Parser PromptsGetRequest)
-> (Object -> Parser PromptsGetRequest)
-> Value
-> Parser PromptsGetRequest
forall a b. (a -> b) -> a -> b
$ \Object
o -> Text -> Maybe (Map Text Value) -> PromptsGetRequest
PromptsGetRequest
(Text -> Maybe (Map Text Value) -> PromptsGetRequest)
-> Parser Text
-> Parser (Maybe (Map Text Value) -> PromptsGetRequest)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Object
o Object -> Key -> Parser Text
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"name"
Parser (Maybe (Map Text Value) -> PromptsGetRequest)
-> Parser (Maybe (Map Text Value)) -> Parser PromptsGetRequest
forall a b. Parser (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o Object -> Key -> Parser (Maybe (Map Text Value))
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
.:? Key
"arguments"
data PromptsGetResponse = PromptsGetResponse
{ PromptsGetResponse -> Maybe Text
promptsGetDescription :: Maybe Text
, PromptsGetResponse -> [PromptMessage]
promptsGetMessages :: [PromptMessage]
} deriving (Int -> PromptsGetResponse -> ShowS
[PromptsGetResponse] -> ShowS
PromptsGetResponse -> String
(Int -> PromptsGetResponse -> ShowS)
-> (PromptsGetResponse -> String)
-> ([PromptsGetResponse] -> ShowS)
-> Show PromptsGetResponse
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> PromptsGetResponse -> ShowS
showsPrec :: Int -> PromptsGetResponse -> ShowS
$cshow :: PromptsGetResponse -> String
show :: PromptsGetResponse -> String
$cshowList :: [PromptsGetResponse] -> ShowS
showList :: [PromptsGetResponse] -> ShowS
Show, PromptsGetResponse -> PromptsGetResponse -> Bool
(PromptsGetResponse -> PromptsGetResponse -> Bool)
-> (PromptsGetResponse -> PromptsGetResponse -> Bool)
-> Eq PromptsGetResponse
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: PromptsGetResponse -> PromptsGetResponse -> Bool
== :: PromptsGetResponse -> PromptsGetResponse -> Bool
$c/= :: PromptsGetResponse -> PromptsGetResponse -> Bool
/= :: PromptsGetResponse -> PromptsGetResponse -> Bool
Eq, (forall x. PromptsGetResponse -> Rep PromptsGetResponse x)
-> (forall x. Rep PromptsGetResponse x -> PromptsGetResponse)
-> Generic PromptsGetResponse
forall x. Rep PromptsGetResponse x -> PromptsGetResponse
forall x. PromptsGetResponse -> Rep PromptsGetResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. PromptsGetResponse -> Rep PromptsGetResponse x
from :: forall x. PromptsGetResponse -> Rep PromptsGetResponse x
$cto :: forall x. Rep PromptsGetResponse x -> PromptsGetResponse
to :: forall x. Rep PromptsGetResponse x -> PromptsGetResponse
Generic)
instance ToJSON PromptsGetResponse where
toJSON :: PromptsGetResponse -> Value
toJSON PromptsGetResponse
resp = [Pair] -> Value
object ([Pair] -> Value) -> [Pair] -> Value
forall a b. (a -> b) -> a -> b
$
[ Key
"messages" Key -> [PromptMessage] -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= PromptsGetResponse -> [PromptMessage]
promptsGetMessages PromptsGetResponse
resp
] [Pair] -> [Pair] -> [Pair]
forall a. [a] -> [a] -> [a]
++ [Pair] -> (Text -> [Pair]) -> Maybe Text -> [Pair]
forall b a. b -> (a -> b) -> Maybe a -> b
maybe [] (\Text
d -> [Key
"description" Key -> Text -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text
d]) (PromptsGetResponse -> Maybe Text
promptsGetDescription PromptsGetResponse
resp)
data ResourcesListRequest = ResourcesListRequest
deriving (Int -> ResourcesListRequest -> ShowS
[ResourcesListRequest] -> ShowS
ResourcesListRequest -> String
(Int -> ResourcesListRequest -> ShowS)
-> (ResourcesListRequest -> String)
-> ([ResourcesListRequest] -> ShowS)
-> Show ResourcesListRequest
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> ResourcesListRequest -> ShowS
showsPrec :: Int -> ResourcesListRequest -> ShowS
$cshow :: ResourcesListRequest -> String
show :: ResourcesListRequest -> String
$cshowList :: [ResourcesListRequest] -> ShowS
showList :: [ResourcesListRequest] -> ShowS
Show, ResourcesListRequest -> ResourcesListRequest -> Bool
(ResourcesListRequest -> ResourcesListRequest -> Bool)
-> (ResourcesListRequest -> ResourcesListRequest -> Bool)
-> Eq ResourcesListRequest
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: ResourcesListRequest -> ResourcesListRequest -> Bool
== :: ResourcesListRequest -> ResourcesListRequest -> Bool
$c/= :: ResourcesListRequest -> ResourcesListRequest -> Bool
/= :: ResourcesListRequest -> ResourcesListRequest -> Bool
Eq, (forall x. ResourcesListRequest -> Rep ResourcesListRequest x)
-> (forall x. Rep ResourcesListRequest x -> ResourcesListRequest)
-> Generic ResourcesListRequest
forall x. Rep ResourcesListRequest x -> ResourcesListRequest
forall x. ResourcesListRequest -> Rep ResourcesListRequest x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. ResourcesListRequest -> Rep ResourcesListRequest x
from :: forall x. ResourcesListRequest -> Rep ResourcesListRequest x
$cto :: forall x. Rep ResourcesListRequest x -> ResourcesListRequest
to :: forall x. Rep ResourcesListRequest x -> ResourcesListRequest
Generic)
instance FromJSON ResourcesListRequest where
parseJSON :: Value -> Parser ResourcesListRequest
parseJSON Value
_ = ResourcesListRequest -> Parser ResourcesListRequest
forall a. a -> Parser a
forall (m :: * -> *) a. Monad m => a -> m a
return ResourcesListRequest
ResourcesListRequest
data ResourcesListResponse = ResourcesListResponse
{ ResourcesListResponse -> [ResourceDefinition]
resourcesListResources :: [ResourceDefinition]
} deriving (Int -> ResourcesListResponse -> ShowS
[ResourcesListResponse] -> ShowS
ResourcesListResponse -> String
(Int -> ResourcesListResponse -> ShowS)
-> (ResourcesListResponse -> String)
-> ([ResourcesListResponse] -> ShowS)
-> Show ResourcesListResponse
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> ResourcesListResponse -> ShowS
showsPrec :: Int -> ResourcesListResponse -> ShowS
$cshow :: ResourcesListResponse -> String
show :: ResourcesListResponse -> String
$cshowList :: [ResourcesListResponse] -> ShowS
showList :: [ResourcesListResponse] -> ShowS
Show, ResourcesListResponse -> ResourcesListResponse -> Bool
(ResourcesListResponse -> ResourcesListResponse -> Bool)
-> (ResourcesListResponse -> ResourcesListResponse -> Bool)
-> Eq ResourcesListResponse
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: ResourcesListResponse -> ResourcesListResponse -> Bool
== :: ResourcesListResponse -> ResourcesListResponse -> Bool
$c/= :: ResourcesListResponse -> ResourcesListResponse -> Bool
/= :: ResourcesListResponse -> ResourcesListResponse -> Bool
Eq, (forall x. ResourcesListResponse -> Rep ResourcesListResponse x)
-> (forall x. Rep ResourcesListResponse x -> ResourcesListResponse)
-> Generic ResourcesListResponse
forall x. Rep ResourcesListResponse x -> ResourcesListResponse
forall x. ResourcesListResponse -> Rep ResourcesListResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. ResourcesListResponse -> Rep ResourcesListResponse x
from :: forall x. ResourcesListResponse -> Rep ResourcesListResponse x
$cto :: forall x. Rep ResourcesListResponse x -> ResourcesListResponse
to :: forall x. Rep ResourcesListResponse x -> ResourcesListResponse
Generic)
instance ToJSON ResourcesListResponse where
toJSON :: ResourcesListResponse -> Value
toJSON ResourcesListResponse
resp = [Pair] -> Value
object
[ Key
"resources" Key -> [ResourceDefinition] -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= ResourcesListResponse -> [ResourceDefinition]
resourcesListResources ResourcesListResponse
resp
]
data ResourcesReadRequest = ResourcesReadRequest
{ ResourcesReadRequest -> URI
resourcesReadUri :: URI
} deriving (Int -> ResourcesReadRequest -> ShowS
[ResourcesReadRequest] -> ShowS
ResourcesReadRequest -> String
(Int -> ResourcesReadRequest -> ShowS)
-> (ResourcesReadRequest -> String)
-> ([ResourcesReadRequest] -> ShowS)
-> Show ResourcesReadRequest
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> ResourcesReadRequest -> ShowS
showsPrec :: Int -> ResourcesReadRequest -> ShowS
$cshow :: ResourcesReadRequest -> String
show :: ResourcesReadRequest -> String
$cshowList :: [ResourcesReadRequest] -> ShowS
showList :: [ResourcesReadRequest] -> ShowS
Show, ResourcesReadRequest -> ResourcesReadRequest -> Bool
(ResourcesReadRequest -> ResourcesReadRequest -> Bool)
-> (ResourcesReadRequest -> ResourcesReadRequest -> Bool)
-> Eq ResourcesReadRequest
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: ResourcesReadRequest -> ResourcesReadRequest -> Bool
== :: ResourcesReadRequest -> ResourcesReadRequest -> Bool
$c/= :: ResourcesReadRequest -> ResourcesReadRequest -> Bool
/= :: ResourcesReadRequest -> ResourcesReadRequest -> Bool
Eq, (forall x. ResourcesReadRequest -> Rep ResourcesReadRequest x)
-> (forall x. Rep ResourcesReadRequest x -> ResourcesReadRequest)
-> Generic ResourcesReadRequest
forall x. Rep ResourcesReadRequest x -> ResourcesReadRequest
forall x. ResourcesReadRequest -> Rep ResourcesReadRequest x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. ResourcesReadRequest -> Rep ResourcesReadRequest x
from :: forall x. ResourcesReadRequest -> Rep ResourcesReadRequest x
$cto :: forall x. Rep ResourcesReadRequest x -> ResourcesReadRequest
to :: forall x. Rep ResourcesReadRequest x -> ResourcesReadRequest
Generic)
instance FromJSON ResourcesReadRequest where
parseJSON :: Value -> Parser ResourcesReadRequest
parseJSON = String
-> (Object -> Parser ResourcesReadRequest)
-> Value
-> Parser ResourcesReadRequest
forall a. String -> (Object -> Parser a) -> Value -> Parser a
withObject String
"ResourcesReadRequest" ((Object -> Parser ResourcesReadRequest)
-> Value -> Parser ResourcesReadRequest)
-> (Object -> Parser ResourcesReadRequest)
-> Value
-> Parser ResourcesReadRequest
forall a b. (a -> b) -> a -> b
$ \Object
o -> do
uriText <- Object
o Object -> Key -> Parser String
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"uri"
case parseURI uriText of
Just URI
uri -> ResourcesReadRequest -> Parser ResourcesReadRequest
forall a. a -> Parser a
forall (m :: * -> *) a. Monad m => a -> m a
return (ResourcesReadRequest -> Parser ResourcesReadRequest)
-> ResourcesReadRequest -> Parser ResourcesReadRequest
forall a b. (a -> b) -> a -> b
$ URI -> ResourcesReadRequest
ResourcesReadRequest URI
uri
Maybe URI
Nothing -> String -> Parser ResourcesReadRequest
forall a. String -> Parser a
forall (m :: * -> *) a. MonadFail m => String -> m a
fail String
"Invalid URI"
data ResourcesReadResponse = ResourcesReadResponse
{ ResourcesReadResponse -> [Content]
resourcesReadContents :: [Content]
} deriving (Int -> ResourcesReadResponse -> ShowS
[ResourcesReadResponse] -> ShowS
ResourcesReadResponse -> String
(Int -> ResourcesReadResponse -> ShowS)
-> (ResourcesReadResponse -> String)
-> ([ResourcesReadResponse] -> ShowS)
-> Show ResourcesReadResponse
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> ResourcesReadResponse -> ShowS
showsPrec :: Int -> ResourcesReadResponse -> ShowS
$cshow :: ResourcesReadResponse -> String
show :: ResourcesReadResponse -> String
$cshowList :: [ResourcesReadResponse] -> ShowS
showList :: [ResourcesReadResponse] -> ShowS
Show, ResourcesReadResponse -> ResourcesReadResponse -> Bool
(ResourcesReadResponse -> ResourcesReadResponse -> Bool)
-> (ResourcesReadResponse -> ResourcesReadResponse -> Bool)
-> Eq ResourcesReadResponse
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: ResourcesReadResponse -> ResourcesReadResponse -> Bool
== :: ResourcesReadResponse -> ResourcesReadResponse -> Bool
$c/= :: ResourcesReadResponse -> ResourcesReadResponse -> Bool
/= :: ResourcesReadResponse -> ResourcesReadResponse -> Bool
Eq, (forall x. ResourcesReadResponse -> Rep ResourcesReadResponse x)
-> (forall x. Rep ResourcesReadResponse x -> ResourcesReadResponse)
-> Generic ResourcesReadResponse
forall x. Rep ResourcesReadResponse x -> ResourcesReadResponse
forall x. ResourcesReadResponse -> Rep ResourcesReadResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. ResourcesReadResponse -> Rep ResourcesReadResponse x
from :: forall x. ResourcesReadResponse -> Rep ResourcesReadResponse x
$cto :: forall x. Rep ResourcesReadResponse x -> ResourcesReadResponse
to :: forall x. Rep ResourcesReadResponse x -> ResourcesReadResponse
Generic)
instance ToJSON ResourcesReadResponse where
toJSON :: ResourcesReadResponse -> Value
toJSON ResourcesReadResponse
resp = [Pair] -> Value
object
[ Key
"contents" Key -> [Content] -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= ResourcesReadResponse -> [Content]
resourcesReadContents ResourcesReadResponse
resp
]
data ToolsListRequest = ToolsListRequest
deriving (Int -> ToolsListRequest -> ShowS
[ToolsListRequest] -> ShowS
ToolsListRequest -> String
(Int -> ToolsListRequest -> ShowS)
-> (ToolsListRequest -> String)
-> ([ToolsListRequest] -> ShowS)
-> Show ToolsListRequest
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> ToolsListRequest -> ShowS
showsPrec :: Int -> ToolsListRequest -> ShowS
$cshow :: ToolsListRequest -> String
show :: ToolsListRequest -> String
$cshowList :: [ToolsListRequest] -> ShowS
showList :: [ToolsListRequest] -> ShowS
Show, ToolsListRequest -> ToolsListRequest -> Bool
(ToolsListRequest -> ToolsListRequest -> Bool)
-> (ToolsListRequest -> ToolsListRequest -> Bool)
-> Eq ToolsListRequest
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: ToolsListRequest -> ToolsListRequest -> Bool
== :: ToolsListRequest -> ToolsListRequest -> Bool
$c/= :: ToolsListRequest -> ToolsListRequest -> Bool
/= :: ToolsListRequest -> ToolsListRequest -> Bool
Eq, (forall x. ToolsListRequest -> Rep ToolsListRequest x)
-> (forall x. Rep ToolsListRequest x -> ToolsListRequest)
-> Generic ToolsListRequest
forall x. Rep ToolsListRequest x -> ToolsListRequest
forall x. ToolsListRequest -> Rep ToolsListRequest x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. ToolsListRequest -> Rep ToolsListRequest x
from :: forall x. ToolsListRequest -> Rep ToolsListRequest x
$cto :: forall x. Rep ToolsListRequest x -> ToolsListRequest
to :: forall x. Rep ToolsListRequest x -> ToolsListRequest
Generic)
instance FromJSON ToolsListRequest where
parseJSON :: Value -> Parser ToolsListRequest
parseJSON Value
_ = ToolsListRequest -> Parser ToolsListRequest
forall a. a -> Parser a
forall (m :: * -> *) a. Monad m => a -> m a
return ToolsListRequest
ToolsListRequest
data ToolsListResponse = ToolsListResponse
{ ToolsListResponse -> [ToolDefinition]
toolsListTools :: [ToolDefinition]
} deriving (Int -> ToolsListResponse -> ShowS
[ToolsListResponse] -> ShowS
ToolsListResponse -> String
(Int -> ToolsListResponse -> ShowS)
-> (ToolsListResponse -> String)
-> ([ToolsListResponse] -> ShowS)
-> Show ToolsListResponse
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> ToolsListResponse -> ShowS
showsPrec :: Int -> ToolsListResponse -> ShowS
$cshow :: ToolsListResponse -> String
show :: ToolsListResponse -> String
$cshowList :: [ToolsListResponse] -> ShowS
showList :: [ToolsListResponse] -> ShowS
Show, ToolsListResponse -> ToolsListResponse -> Bool
(ToolsListResponse -> ToolsListResponse -> Bool)
-> (ToolsListResponse -> ToolsListResponse -> Bool)
-> Eq ToolsListResponse
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: ToolsListResponse -> ToolsListResponse -> Bool
== :: ToolsListResponse -> ToolsListResponse -> Bool
$c/= :: ToolsListResponse -> ToolsListResponse -> Bool
/= :: ToolsListResponse -> ToolsListResponse -> Bool
Eq, (forall x. ToolsListResponse -> Rep ToolsListResponse x)
-> (forall x. Rep ToolsListResponse x -> ToolsListResponse)
-> Generic ToolsListResponse
forall x. Rep ToolsListResponse x -> ToolsListResponse
forall x. ToolsListResponse -> Rep ToolsListResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. ToolsListResponse -> Rep ToolsListResponse x
from :: forall x. ToolsListResponse -> Rep ToolsListResponse x
$cto :: forall x. Rep ToolsListResponse x -> ToolsListResponse
to :: forall x. Rep ToolsListResponse x -> ToolsListResponse
Generic)
instance ToJSON ToolsListResponse where
toJSON :: ToolsListResponse -> Value
toJSON ToolsListResponse
resp = [Pair] -> Value
object
[ Key
"tools" Key -> [ToolDefinition] -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= ToolsListResponse -> [ToolDefinition]
toolsListTools ToolsListResponse
resp
]
data ToolsCallRequest = ToolsCallRequest
{ ToolsCallRequest -> Text
toolsCallName :: Text
, ToolsCallRequest -> Maybe (Map Text Value)
toolsCallArguments :: Maybe (Map Text Value)
} deriving (Int -> ToolsCallRequest -> ShowS
[ToolsCallRequest] -> ShowS
ToolsCallRequest -> String
(Int -> ToolsCallRequest -> ShowS)
-> (ToolsCallRequest -> String)
-> ([ToolsCallRequest] -> ShowS)
-> Show ToolsCallRequest
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> ToolsCallRequest -> ShowS
showsPrec :: Int -> ToolsCallRequest -> ShowS
$cshow :: ToolsCallRequest -> String
show :: ToolsCallRequest -> String
$cshowList :: [ToolsCallRequest] -> ShowS
showList :: [ToolsCallRequest] -> ShowS
Show, ToolsCallRequest -> ToolsCallRequest -> Bool
(ToolsCallRequest -> ToolsCallRequest -> Bool)
-> (ToolsCallRequest -> ToolsCallRequest -> Bool)
-> Eq ToolsCallRequest
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: ToolsCallRequest -> ToolsCallRequest -> Bool
== :: ToolsCallRequest -> ToolsCallRequest -> Bool
$c/= :: ToolsCallRequest -> ToolsCallRequest -> Bool
/= :: ToolsCallRequest -> ToolsCallRequest -> Bool
Eq, (forall x. ToolsCallRequest -> Rep ToolsCallRequest x)
-> (forall x. Rep ToolsCallRequest x -> ToolsCallRequest)
-> Generic ToolsCallRequest
forall x. Rep ToolsCallRequest x -> ToolsCallRequest
forall x. ToolsCallRequest -> Rep ToolsCallRequest x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. ToolsCallRequest -> Rep ToolsCallRequest x
from :: forall x. ToolsCallRequest -> Rep ToolsCallRequest x
$cto :: forall x. Rep ToolsCallRequest x -> ToolsCallRequest
to :: forall x. Rep ToolsCallRequest x -> ToolsCallRequest
Generic)
instance FromJSON ToolsCallRequest where
parseJSON :: Value -> Parser ToolsCallRequest
parseJSON = String
-> (Object -> Parser ToolsCallRequest)
-> Value
-> Parser ToolsCallRequest
forall a. String -> (Object -> Parser a) -> Value -> Parser a
withObject String
"ToolsCallRequest" ((Object -> Parser ToolsCallRequest)
-> Value -> Parser ToolsCallRequest)
-> (Object -> Parser ToolsCallRequest)
-> Value
-> Parser ToolsCallRequest
forall a b. (a -> b) -> a -> b
$ \Object
o -> Text -> Maybe (Map Text Value) -> ToolsCallRequest
ToolsCallRequest
(Text -> Maybe (Map Text Value) -> ToolsCallRequest)
-> Parser Text
-> Parser (Maybe (Map Text Value) -> ToolsCallRequest)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Object
o Object -> Key -> Parser Text
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"name"
Parser (Maybe (Map Text Value) -> ToolsCallRequest)
-> Parser (Maybe (Map Text Value)) -> Parser ToolsCallRequest
forall a b. Parser (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o Object -> Key -> Parser (Maybe (Map Text Value))
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
.:? Key
"arguments"
data ToolsCallResponse = ToolsCallResponse
{ ToolsCallResponse -> [Content]
toolsCallContent :: [Content]
, ToolsCallResponse -> Maybe Bool
toolsCallIsError :: Maybe Bool
} deriving (Int -> ToolsCallResponse -> ShowS
[ToolsCallResponse] -> ShowS
ToolsCallResponse -> String
(Int -> ToolsCallResponse -> ShowS)
-> (ToolsCallResponse -> String)
-> ([ToolsCallResponse] -> ShowS)
-> Show ToolsCallResponse
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> ToolsCallResponse -> ShowS
showsPrec :: Int -> ToolsCallResponse -> ShowS
$cshow :: ToolsCallResponse -> String
show :: ToolsCallResponse -> String
$cshowList :: [ToolsCallResponse] -> ShowS
showList :: [ToolsCallResponse] -> ShowS
Show, ToolsCallResponse -> ToolsCallResponse -> Bool
(ToolsCallResponse -> ToolsCallResponse -> Bool)
-> (ToolsCallResponse -> ToolsCallResponse -> Bool)
-> Eq ToolsCallResponse
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: ToolsCallResponse -> ToolsCallResponse -> Bool
== :: ToolsCallResponse -> ToolsCallResponse -> Bool
$c/= :: ToolsCallResponse -> ToolsCallResponse -> Bool
/= :: ToolsCallResponse -> ToolsCallResponse -> Bool
Eq, (forall x. ToolsCallResponse -> Rep ToolsCallResponse x)
-> (forall x. Rep ToolsCallResponse x -> ToolsCallResponse)
-> Generic ToolsCallResponse
forall x. Rep ToolsCallResponse x -> ToolsCallResponse
forall x. ToolsCallResponse -> Rep ToolsCallResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. ToolsCallResponse -> Rep ToolsCallResponse x
from :: forall x. ToolsCallResponse -> Rep ToolsCallResponse x
$cto :: forall x. Rep ToolsCallResponse x -> ToolsCallResponse
to :: forall x. Rep ToolsCallResponse x -> ToolsCallResponse
Generic)
instance ToJSON ToolsCallResponse where
toJSON :: ToolsCallResponse -> Value
toJSON ToolsCallResponse
resp = [Pair] -> Value
object ([Pair] -> Value) -> [Pair] -> Value
forall a b. (a -> b) -> a -> b
$
[ Key
"content" Key -> [Content] -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= ToolsCallResponse -> [Content]
toolsCallContent ToolsCallResponse
resp
] [Pair] -> [Pair] -> [Pair]
forall a. [a] -> [a] -> [a]
++ [Pair] -> (Bool -> [Pair]) -> Maybe Bool -> [Pair]
forall b a. b -> (a -> b) -> Maybe a -> b
maybe [] (\Bool
e -> [Key
"isError" Key -> Bool -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Bool
e]) (ToolsCallResponse -> Maybe Bool
toolsCallIsError ToolsCallResponse
resp)
data ListChangedNotification = ListChangedNotification
deriving (Int -> ListChangedNotification -> ShowS
[ListChangedNotification] -> ShowS
ListChangedNotification -> String
(Int -> ListChangedNotification -> ShowS)
-> (ListChangedNotification -> String)
-> ([ListChangedNotification] -> ShowS)
-> Show ListChangedNotification
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> ListChangedNotification -> ShowS
showsPrec :: Int -> ListChangedNotification -> ShowS
$cshow :: ListChangedNotification -> String
show :: ListChangedNotification -> String
$cshowList :: [ListChangedNotification] -> ShowS
showList :: [ListChangedNotification] -> ShowS
Show, ListChangedNotification -> ListChangedNotification -> Bool
(ListChangedNotification -> ListChangedNotification -> Bool)
-> (ListChangedNotification -> ListChangedNotification -> Bool)
-> Eq ListChangedNotification
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: ListChangedNotification -> ListChangedNotification -> Bool
== :: ListChangedNotification -> ListChangedNotification -> Bool
$c/= :: ListChangedNotification -> ListChangedNotification -> Bool
/= :: ListChangedNotification -> ListChangedNotification -> Bool
Eq, (forall x.
ListChangedNotification -> Rep ListChangedNotification x)
-> (forall x.
Rep ListChangedNotification x -> ListChangedNotification)
-> Generic ListChangedNotification
forall x. Rep ListChangedNotification x -> ListChangedNotification
forall x. ListChangedNotification -> Rep ListChangedNotification x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. ListChangedNotification -> Rep ListChangedNotification x
from :: forall x. ListChangedNotification -> Rep ListChangedNotification x
$cto :: forall x. Rep ListChangedNotification x -> ListChangedNotification
to :: forall x. Rep ListChangedNotification x -> ListChangedNotification
Generic)
instance ToJSON ListChangedNotification where
toJSON :: ListChangedNotification -> Value
toJSON ListChangedNotification
ListChangedNotification = [Pair] -> Value
object []