louter-0.1.1.2: louter.cabal
cabal-version: 3.0
name: louter
version: 0.1.1.2
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
homepage: https://github.com/junjihashimoto/louter
category: Web
build-type: Simple
extra-doc-files: README.md
, CHANGELOG.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