packages feed

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