cabal-version: 3.0 name: louter version: 0.1.1.0 synopsis: Multi-protocol LLM router and client library description: Protocol converter library that lets your application connect to any LLM API (OpenAI, Gemini, Anthropic) with automatic protocol translation, SSE streaming, and function call buffering. Use as library or run as proxy server. license: MIT license-file: LICENSE author: Junji Hashimoto maintainer: junji.hashimoto@gmail.com category: Web build-type: Simple extra-doc-files: README.md library exposed-modules: -- Client API (use as library) Louter.Client Louter.Client.OpenAI Louter.Client.Gemini Louter.Client.Anthropic -- Core protocol conversion (server-side converters, reused by client) Louter.Protocol.AnthropicConverter Louter.Protocol.AnthropicStreaming Louter.Protocol.GeminiConverter Louter.Protocol.GeminiStreaming Louter.Protocol.GeminiStreamingJsonArray -- Backend protocol conversions (for multi-backend support) Louter.Backend.OpenAIToAnthropic Louter.Backend.OpenAIToGemini -- XML tool format support (Qwen3-Coder) Louter.Streaming.XMLToolCallParser Louter.Streaming.XMLStreamProcessor -- Types Louter.Types Louter.Types.Request Louter.Types.Response Louter.Types.Streaming Louter.Types.ToolFormat hs-source-dirs: src default-language: Haskell2010 ghc-options: -Wall -Wcompat -Widentities -Wincomplete-record-updates -Wincomplete-uni-patterns -Wmissing-export-lists -Wmissing-home-modules -Wpartial-fields -Wredundant-constraints build-depends: base >=4.7 && <5 , aeson >=2.0 && <3.0 , bytestring >=0.11 && <1.0 , http-client >=0.7 && <1.0 , http-client-tls >=0.3 && <1.0 , http-types >=0.12 && <1.0 , text >=2.0 && <3.0 , containers >=0.6 && <1.0 , transformers >=0.5 && <1.0 , conduit >=1.3 && <2.0 , conduit-extra >=1.3 && <2.0 , mtl >=2.2 && <3.0 , scientific >=0.3 && <1.0 , unordered-containers >=0.2 && <1.0 , vector >=0.13 && <1.0 , warp >=3.3 && <4.0 , wai >=3.2 && <4.0 , regex-tdfa >=1.3 && <2.0 executable louter-server main-is: Main.hs hs-source-dirs: app default-language: Haskell2010 ghc-options: -Wall -threaded -rtsopts -with-rtsopts=-N build-depends: base , louter , optparse-applicative >=0.17 && <1.0 , yaml >=0.11 && < 1.0 , aeson , bytestring , text , wai , warp , http-types , http-client , http-client-tls , containers , unordered-containers , conduit , transformers , mtl , vector , random >=1.2 && <2.0 executable louter-cli main-is: CLI.hs hs-source-dirs: app default-language: Haskell2010 ghc-options: -Wall -threaded -rtsopts -with-rtsopts=-N build-depends: base , louter , optparse-applicative >=0.17 && <1.0 , aeson , bytestring , text , http-client , http-client-tls , containers test-suite louter-test type: exitcode-stdio-1.0 main-is: Spec.hs other-modules: hs-source-dirs: test default-language: Haskell2010 ghc-options: -Wall -threaded -rtsopts -with-rtsopts=-N build-depends: base , louter , hspec >=2.10 , QuickCheck >=2.14 , aeson , bytestring , text , unordered-containers